我注意到Yii在assets目录中创建了一组奇怪的目录(名称如8523d23或10s89b92),这甚至发生在运行时。例如,我的一个表获得了超过10条记录,分页被踢了,我在名为pager.css的assets子目录中获得了一个新文件。
当我将我的网站从测试移动到生产时,我应该复制所有这些,还是只创建一个空的“assets”目录,它将在运行时填充?
如果我想添加一些新的jQuery插件,我该怎么办?
例如,我想添加jquery.charcounter.js,我将它复制到资产还是yii/framework/web/js/source
?如果我执行后者,我如何获得HTML页面输出中包含的.js文件?
答案 0 :(得分:22)
assets
应该是一个可写目录。 Yii负责资产。
通过调用Yii::app()->assetManager->publish()
,可以将一些样式表,图像,脚本甚至整个目录放入Web可见文件夹中。
pager.css
和其他不熟悉的文件由小部件(例如CLinkPager
)生成,其他组件(例如CClientScript
在需要时发布jQuery)。
在部署期间,此文件夹应为空,但这并不重要。
永远不应该通过框架文件夹来添加插件。您可以将它们放在components
目录中,并在必要时将其发布到运行时,或者放到任何其他方便的可见目录中(例如images
或css
)。
要嵌入jquery.charcounter.js
,请将其放在components
目录中,然后调用
Yii::app()->clientScript->registerScriptFile(
Yii::app()->assetManager->publish(
Yii::getPathOfAlias('application.components').'/jquery.charcounter.js'
),
CClientScript::POS_END
);
关于奇怪的文件夹名称,我坚信它们是唯一的哈希(或部分),因此如果应用程序使用多个扩展名,它们可以区分开来。
答案 1 :(得分:6)
这将解决查询,因为这提供了资产文件夹的详细说明: