CakePHP:$ this-> Html->脚本在应用于布局时不在元素内部工作

时间:2014-12-30 22:08:03

标签: php cakephp cakephp-2.0

我正在使用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()

1 个答案:

答案 0 :(得分:1)

只要您还没有输出脚本,它就可以正常工作。您需要了解执行顺序。 首先是视图,然后是布局。 一旦布局呈现,并且一旦输出缓冲内容,就不能再使用缓冲输出(使用内联false)。那么你需要内联真实并直接回应它。