将Javascript文件加载到CakePHP布局中的";底部“;

将Javascript文件加载到CakePHP布局中的";底部“;,php,cakephp,cakephp-2.2,Php,Cakephp,Cakephp 2.2,目前,我有一个带有布局和大量视图的大型CakePHP应用程序。在布局中,我在头部加载大多数视图所需的Javascript文件。在视图中,我要么加载额外的Javascript文件(例如,加载仅在其中需要的库文件),要么在脚本标记中添加一些仅与此视图相关的Javascript代码,例如,如果我需要单击处理程序 因为众所周知,在HTML头部加载Javascript文件会阻止加载页面,所以我想在关闭body标记之前将它们放在底部。但是如果我这样做,视图中加载内容的Javascript就会中断,因为它不知

目前,我有一个带有布局和大量视图的大型CakePHP应用程序。在布局中,我在头部加载大多数视图所需的Javascript文件。在视图中,我要么加载额外的Javascript文件(例如,加载仅在其中需要的库文件),要么在脚本标记中添加一些仅与此视图相关的Javascript代码,例如,如果我需要单击处理程序

因为众所周知,在HTML头部加载Javascript文件会阻止加载页面,所以我想在关闭body标记之前将它们放在底部。但是如果我这样做,视图中加载内容的Javascript就会中断,因为它不知道我加载的Javascript文件。我知道加载视图中的Javascript代码是在加载文件之前执行的。但我怎样才能防止呢

我目前正在使用布局(以及其他地方)中的HTML帮助器加载我的JS文件,如下所示:

<?php echo $this->Html->script('//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'); ?>

我使用JS助手在页面末尾用

<?php echo $this->Js->writeBuffer(); ?>


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

在我看来,这就是我所做的:

echo $this->Html->script('filename', array('inline' => false));
这就是我在布局底部所做的:

echo $this->fetch('script');

由于CakePHP版本2.1,您可以使用脚本块:

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

// in your layout
echo $this->fetch('scriptBottom');

这种方法允许您在布局的
中保留
echo$This->fetch('script')
,以防您需要任何位于顶部的脚本

我认为这是一个很好的解决方案,如果我将所有内联代码都放在Javascript文件的视图中,我认为它是有效的。谢谢你的建议!谢谢你的回答。事实上,我已经在网上找到了你的答案,并将其集成到了一起,但这确实值得在这里提及,因为它完成了答案。你的意思是,最好不要在布局中加载任何js,只在布局结束时获取它们,并在每个视图中调用所需的js?