【问题标题】:CakePHP: Include js file in header from viewCakePHP:从视图中将js文件包含在标题中
【发布时间】:2014-10-22 21:31:40
【问题描述】:

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

【问题讨论】:

    标签: javascript php jquery cakephp


    【解决方案1】:

    你有 false 引号,所以 PHP 将其视为 string 而不是 boolean。应该是:

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

    【讨论】:

    • 我盯着它看了好几个小时!我真的,真的应该知道得更好,不是吗?非常感谢。
    【解决方案2】:

    我想对此进行扩展并提及几件事。

    内联脚本

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

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

    非内联脚本

    这会将脚本放置在您在布局文件中放置 $this->fetch('script') 的任何位置,通常位于页面的头部。 (正如 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')); ?>
    

    希望对你有帮助

    【讨论】:

    • 是的,它确实有帮助。谢谢。我发现 CakePHP 的书在这方面有点薄弱。
    • 您甚至不需要 echo 脚本,因为它会在稍后 scriptBottom 所在的位置被缓冲和回显。
    • 刚刚对此进行了测试,它有效,相应地更新了答案,干杯。
    【解决方案3】:

    只需将其放在您的视图 ctp 文件中。 :)

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

    【讨论】:

      【解决方案4】:

      在 cakephp 3 而不是 array('inline' => false) 中,如果有人像我一样寻找答案,你应该使用 array('block' => true)。而且你不需要在你的 ctp 文件顶部回显脚本,你可以把它放在 php 语法中,即

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

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

        • 在视图中使用 this 将内联打印,视图将在 head 标签之外,OP 不想要这个。
        猜你喜欢
        • 1970-01-01
        • 2010-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多