目前,我有一个很大的CakePHP应用程序,它有一个布局和很多视图。在布局中,我在头部加载大多数视图所需的Javascript文件。在视图中,我要么加载额外的Javascript文件(例如,加载仅在那里需要的库文件),要么在脚本标记中添加一些仅与此视图相关的Javascript代码,例如,如果我需要单击处理程序。
由于已知的事实是在加载页面的HTML头块中加载Javascript文件,我想在关闭正文标记之前将它们放在底部。但是,如果我这样做,我的视图中加载内容的Javascript会中断,因为它不知道我加载的Javascript文件。我知道加载视图中的Javascript代码是在加载文件之前执行的。但是我怎么能防止这种情况呢?
我目前正在使用布局中的HTML帮助程序(以及其他任何地方)加载我的JS文件,如下所示:
<?php echo $this->Html->script('//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'); ?>
我使用JS Helper在
页面的末尾“输出”JS<?php echo $this->Js->writeBuffer(); ?>
有没有办法可以在视图中附加我的JS代码,以便在调用writeBuffer时执行它?这可以帮助我吗?
答案 0 :(得分:19)
从CakePHP 2.1版开始,您可以使用脚本块:
// in your view
$this->Html->script('filename', array('block' => 'scriptBottom'));
// in your layout
echo $this->fetch('scriptBottom');
此方法可让您将echo $this->fetch('script')
保留在布局的<head>
中,以防您需要顶部的任何脚本。
答案 1 :(得分:12)
这就是我的观点:
echo $this->Html->script('filename', array('inline' => false));
这就是我在布局底部所做的事情:
echo $this->fetch('script');