CakePHP:在视图的头部包含js文件

时间:2014-10-22 21:31:40

标签: javascript php jquery cakephp

cakephp文档说:

  

默认情况下,脚本标记会以内联方式添加到文档中。如果通过将$ options ['inline']设置为false来覆盖它,则会将脚本标记添加到脚本块中,您可以在该脚本块中打印文档中的其他位置。

所以在我的视图文件(.ctp)中我有:

echo $this->Html->script('//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js', array('inline' => 'false'));

在我的布局中,在head标签中:

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

但脚本标签打印出内联而不是打印头。如果我错过了视图文件中该行的回显,则该脚本在我的html中根本不会打印出来。

感谢任何帮助。

PAE

5 个答案:

答案 0 :(得分:10)

引号中有false,因此PHP将其视为string而不是boolean。它应该是:

echo $this->Html->script('//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js', array('inline' => false));

答案 1 :(得分:7)

我想扩展并提及一些事情。

内联脚本

这将打印出内联的脚本标记,并不总是需要。

<?php echo $this->Html->script('script.name'); ?>

非内联脚本

这会将脚本放在您在布局文件中放置$ this-&gt; fetch(&#39; script&#39;)的位置,通常位于页面的头部。 (正如ub3rst4r指出的那样,你将false作为字符串传递)

<?php echo $this->Html->script('script.name', array('inline' => false)); ?>

阻止脚本

对于许多人来说,这可能是一个更有用的版本,你可以在任何布局文件中放置一个脚本块(实际上你想要多少)。我将向您展示一个示例,并将其称为scriptBottom,直到我的身体结束。

<?php echo $this->fetch('scriptBottom'); ?>

然后你可以将块传递给脚本方法,如

<?php $this->Html->script('script.name', array('block' => 'scriptBottom')); ?>

希望这有帮助

答案 2 :(得分:3)

将它放在您的视图ctp文件中。 :)

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

答案 3 :(得分:1)

你为什么要使用很多属性?只需使用网址

echo $this->Html->script('http://code.jquery.com/jquery.min.js');

答案 4 :(得分:1)

在cakephp 3中而不是数组(&#39;内联&#39; =&gt; false)你应该使用数组(&#39; block&#39; =&gt; true)如果有人正在寻找像我一样的答案是。而且你不需要在你的ctp文件顶部回显脚本,你可以放在php语法中,即

<?php $this->Html->script('//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js', ['block' => true]); ?>