我想在控制器中设置布局的$ scripts_for_layout。 这是可能的,如果是的话怎么样?
答案 0 :(得分:3)
简短的回答:也许你做错了。
答案很长:脚本不应该依赖于控制器。这在理论上是错误的,蛋糕不喜欢那些不遵守mvc模式的人。
解决方法(因为有时您只需要):您可以在beforeRender中设置var:
function beforeRender() {
parent::beforeRender();
$this->set('scripts', array('script1', 'script2' ...));
}
在布局中检查$脚本并添加它们。
答案 1 :(得分:1)
在蛋糕1.2中,当你执行$this->set('script_for_layout', 'script here...)
时,它会将此变量转换为$ scriptForLayout,因此无效。
Cake 1.3修复此问题,但我没有尝试查看它是否有效但是你违反了MVC,因为脚本是针对View而不是设置在Controller级别。对于动态脚本,您可以像上一张海报建议的那样为视图指定变量。
答案 2 :(得分:1)
我知道这是一个老问题,但今天我遇到了同样的问题。解决方案似乎比这里提到的答案更容易。来自CakePHP 1.2食谱:
内联:块是应该内联打印还是写入缓存以供以后输出(即$ scripts_for_layout)。
因此,在您的视图中,您只需要包含将内联设置为false的脚本,如下所示:
$javascript->link('script1', false)
你可以为CSS做同样的事情:
$html->css('stylesheet1', null, array(), false)
注意:我只在CakePHP 1.2上测试了这个。但根据1.3的食谱,它是一回事。