Yii 不是自动的,包括 jquery

Posted

技术标签:

【中文标题】Yii 不是自动的,包括 jquery【英文标题】:Yii is not auto including jquery 【发布时间】:2012-04-24 17:39:28 【问题描述】:

我对 Yii 和 Jquery 有一个奇怪的问题:

当我在 localhost Yii 上打开一个使用 ajax/jquery 的页面时,Yii 会自动将资产包含调用添加到页面:

<link rel="stylesheet" type="text/css" href="/PATH/assets/f72b359d/style.css" />
<script type="text/javascript" src="/PATH/assets/2e442e1a/jquery.js"></script>
<script type="text/javascript" src="/PATH/assets/2e442e1a/jquery.cookie.js"></script>

但是,当我在服务器上运行相同的代码时,Yii 并没有这样做,因此没有可用的 Jquery。

如果有人能找到解决问题的方法,我将不胜感激。

【问题讨论】:

我从未使用过 Yii,但这是我的猜测,尝试使用绝对路径而不是相对路径? “不做”是什么意思?标签根本不在&lt;head&gt; 内吗? 或者尝试使用 Google CDN(内容交付网络)来服务 jQuery:ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js 无法保证 YII 会将资产放在服务器上与 localhost 上相同的位置。你确定路径是对的吗? src="/PATH/assets/2e442e1a/jquery.js" 等路径中的 2e442e1a 部分将发生变化 不要将 Yii 的资产包含在 src="/PATH/assets/2e442e1a/jquery.js" 这样的路径中。您应该通过 Yii::app()->getClientScript() 获得的 CClientScript 方法包含/注册 JS 代码。 【参考方案1】:

您似乎没有以正确的方式注册 jQuery。您必须在 &lt;/head&gt; 标记之前的 /protected/views/layout/main.php 中添加以下行:

<?php Yii::app()->clientScript->registerCoreScript('jquery'); ?>

它会自动加载 jQuery。请记住,如果 YII_DEBUG 标志打开,它将加载非缩小版本,当停用(在生产中)时,它将加载缩小版本。希望这能解决您的问题。

【讨论】:

其实这条线的位置并不重要。您可以将它放在控制器、视图等中。但我认为这不是问题 这就是解决方案。我没有明确注册 jQuery,因为它工作正常,所以我什至不知道我应该这样做。我刚刚想到它正在工作,因为 Yii 调试工具栏为我包含了 jQuery,并且该工具栏在服务器上已关闭。【参考方案2】:

如果一切都在您的本地计算机上运行,​​则可能是权限问题

您是否检查过 /assets 在您的服务器上是可写的?

Yii 在这个目录中发布它运行时需要的资产

【讨论】:

这是我检查的第一件事,所有目录都是可写的。

以上是关于Yii 不是自动的,包括 jquery的主要内容,如果未能解决你的问题,请参考以下文章

YII2如何将查询结果发送到jquery自动完成?

Yii2 漂亮的 URL:用斜线自动转换所有内容(包括所有参数)

在 Yii 的 JS 上自动添加 CDATA?

使用 ActiveForm 在 yii2 中的电子邮件和密码字段中自动完成关闭

YII框架的类自动加载机制

Yii2的深入学习--自动加载机制(转)