【问题标题】:CakePHP: content appended to blocks from a view loading firstCakePHP:从首先加载的视图中附加到块的内容
【发布时间】:2013-10-24 11:45:48
【问题描述】:

我正在使用视图块来允许各个视图添加特定于这些视图的脚本和样式表。随处使用的资源默认包含在布局中。这里是the documentation on view blocks

一切都按描述进行,但是我的视图中附加的内容是在默认块内容之前添加的(即使我使用的是$this->append('block name'))。经过一番激愤之后,我推断视图实际上是在布局之前首先被引用的。所以我在视图中加载的脚本什么都没有。然后布局的脚本随后被附加。

我能够通过删除块外的全局脚本来解决这个问题。但我不喜欢这种方法有几个原因。将来,我可能希望我的视图能够覆盖某些东西。此外,这似乎是错误的,并且与视图块的用途相反。

我的问题: 1. 我描述的行为是预期的行为吗? 2. 是否有更好的解决方法来管理来自视图附加的脚本的脚本依赖关系?

【问题讨论】:

    标签: php cakephp


    【解决方案1】:

    我认为块不应该在布局中定义,这不是它的意图,它应该在视图或元素中定义,由其他视图或元素附加,然后由布局获取或视图。

    【讨论】:

    • 但是文档清楚地指出,如果包含脚本和其他资源,它的主要用途之一是......而且那些几乎总是属于布局,对吧?开箱即用的 default.ctp 布局就是这样设置的,这一事实支持了这一点。
    • layout是view后渲染的,所以不能在layout中定义block,如果只是想追加一些js或者css文件,不如试试$this->Html->script('carousel', array('inline' => false));,就像document说的那样?
    • 如果我这样做,视图的脚本不会在布局中定义的全局样式之前添加吗?这不是重现了我已经遇到的同样的问题,只是使用 cakePHP 的内置魔法 ->script() 块?为了使您的建议起作用,我必须在每个视图中一次又一次地添加所有脚本。对吗?
    猜你喜欢
    • 2015-01-26
    • 1970-01-01
    • 2014-10-28
    • 1970-01-01
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    • 2019-11-27
    • 1970-01-01
    相关资源
    最近更新 更多