我正在使用CakePHP 2.x
我有几个需要javascript文件的元素,所以在元素ctp文件(whatever.ctp
)中我做了这样的事情:$this->Html->script('whatever.js', array('inline'=>false));
这通常很有用......
但是我注意到当我尝试在布局(而不是视图)上直接使用这个完全相同的元素时,它不起作用:
//在default.ctp布局中 echo $ this-> element('whatever');
元素正常显示,但脚本不会添加到脚本块中。如果我将相同的元素移动到视图中,则会添加脚本 do 。或者,如果我从脚本中取出脚本,只需将$this->Html->script('whatever.js', array('inline'=>false));
添加到默认值。那也有效。
那么为什么元素不能添加到视图之外的脚本块?
如果不清楚......
//this works
layout -> view -> element -> $this->Html->script()
//this works
layout -> $this->Html->script()
//this DOESN'T work
layout -> element -> $this->Html->script()
答案 0 :(得分:1)
只要您还没有输出脚本,它就可以正常工作。您需要了解执行顺序。 首先是视图,然后是布局。 一旦布局呈现,并且一旦输出缓冲内容,就不能再使用缓冲输出(使用内联false)。那么你需要内联真实并直接回应它。