在"底部"的CakePHP布局中加载Javascript文件

ako*_*out 10 php cakephp cakephp-2.2

目前,我有一个很大的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'); ?>
Run Code Online (Sandbox Code Playgroud)

我使用JS Helper在页面末尾"输出"JS

<?php echo $this->Js->writeBuffer(); ?>
Run Code Online (Sandbox Code Playgroud)

有没有办法可以在视图中附加我的JS代码,以便在调用writeBuffer时执行它?这可以帮助我吗?

chr*_*non 19

从CakePHP 2.1版开始,您可以使用脚本块:

// in your view
$this->Html->script('filename', array('block' => 'scriptBottom'));

// in your layout
echo $this->fetch('scriptBottom');
Run Code Online (Sandbox Code Playgroud)

这种方法可以让你保持echo $this->fetch('script')<head>布局的情况下,你在上面需要的任何脚本.


Ada*_*lor 12

这就是我在我看来做的事情:

echo $this->Html->script('filename', array('inline' => false));
Run Code Online (Sandbox Code Playgroud)

这就是我在布局底部所做的事情:

echo $this->fetch('script');
Run Code Online (Sandbox Code Playgroud)