我想从控制器中设置布局的$ scripts_for_layout。 这是可能的,如果是的话,怎么样?
回答
简答:也许你做错了。
长答案:脚本不应该依赖于控制器。这在理论上是错误的,蛋糕不喜欢不遵守mvc模式的人。
解决方法(因为有时你只需要):您可以在beforeRender一个变种:
function beforeRender() {
parent::beforeRender();
$this->set('scripts', array('script1', 'script2' ...));
}
而且在布局确认为$脚本和添加。
现在你说了,我明白我做错了。 我不想在每个视图中使用脚本,我认为使用控制器文件会更加明智。所以我只有一个文件可以编辑。 – kaklon 2010-02-26 09:30:10
也许你可以使用不同的布局,如果它对你更好。在这些年里,我发现我尝试做这个蛋糕的每一件事都不会让我错,或者不符合MVC标准。 蛋糕是美好的也因为迫使你写好,清洁和结构化的代码。 – 2010-02-26 11:22:43
在Cake 1.2中,当你做$this->set('script_for_layout', 'script here...)
时,它会将这个变量转换为$ scriptForLayout,所以它不起作用。
Cake 1.3修复了这个问题,但我没有试过看它是否有效,但是你违反了MVC,因为脚本是为了View而不是在Controller级设置的。对于动态脚本,您可以像上一张海报所建议的那样为您的视图分配变量。
我知道这是一个老问题,但今天我有同样的问题。解决方案似乎比这里提到的答案更容易。来自CakePHP 1.2的食谱:
内联:块应该内联打印还是写入缓存以备后续输出(即$ scripts_for_layout)。
所以,在你看来,你只需要包含脚本设置在线为假,像这样:
$javascript->link('script1', false)
您可以为CSS做同样的:
$html->css('stylesheet1', null, array(), false)
关注:我只在CakePHP 1.2上测试过。但根据1.3的食谱,这是一回事。
- 1. 我可以在magento中设置控制器操作的cronjob吗?
- 2. 我可以重写控制器ActionAttribute吗?
- 3. laravel - 我可以从控制器创建控制器吗?
- 4. 我可以设置高于2GB的任务内存限制吗
- 5. 我可以设置memory_limit高于机器内存吗?
- 6. Spring MVC控制器可以设置URL在浏览器中显示吗?
- 7. 我可以根据控制器ID在页面中使用控制器吗?
- 8. 我可以在BarButton上设置UITableViewCellAccessoryCheckmark吗?
- 9. 我可以设置$吗?在测试?
- 10. 可以在控制器内部使用辅助方法吗?
- 11. Cakephp会话未在页面控制器中设置
- 12. 我可以在ViewFlipper内部设置contentView吗?
- 13. 我可以在内核中设置Linux SIGUSR1吗?
- 14. 我们可以在Spring MVC中扩展控制器吗?
- 15. 我们可以在控制器laravel中使用helper吗?
- 16. 我可以在控制器中访问JSON模型的值吗?
- 17. 我可以在观察者中使用控制器方法吗?
- 18. 可以在我的mvc3控制器中调用SignalR的IConnectionManager吗?
- 19. 可以在CakePHP中访问控制器中的模型数据吗?
- 20. 你可以在CakePHP的视图中调用控制器函数吗?
- 21. 我可以控制iPhone通话吗?
- 22. 我可以控制eclipse jsp验证吗?
- 23. Java:我可以控制BufferedWriter吗?
- 24. 是否可以在控制器类中设置Pane的recoures?
- 25. 导航控制器可以实现吗?
- 26. 从我的控制器动作中,我可以访问HttpContextBase吗?
- 27. 可可控制设置Shorcuts
- 28. 我可以在MobileFirst 8适配器中设置AuthenticatedUser吗?
- 29. 我可以根据iframe中的内容来控制页面吗?
- 30. 我可以看到内置控件的源代码吗?
你为什么要这么做?如果是每个动作都包含的脚本,我会将其放入布局中。如果只是采取某些行动,我会把它放在视图中。 – 2010-02-25 16:53:12
你说得对,我明白了(在下面的评论中更长的文章) – kaklon 2010-02-26 09:33:08