在Yii中使用资产的正确方法是什么?

时间:2009-11-05 08:39:50

标签: php jquery-plugins yii assets

我注意到Yii在assets目录中创建了一组奇怪的目录(名称如8523d23或10s89b92),这甚至发生在运行时。例如,我的一个表获得了超过10条记录,分页被踢了,我在名为pager.css的assets子目录中获得了一个新文件。

当我将我的网站从测试移动到生产时,我应该复制所有这些,还是只创建一个空的“assets”目录,它将在运行时填充?

如果我想添加一些新的jQuery插件,我该怎么办?

例如,我想添加jquery.charcounter.js,我将它复制到资产还是yii/framework/web/js/source?如果我执行后者,我如何获得HTML页面输出中包含的.js文件?

2 个答案:

答案 0 :(得分:22)

assets应该是一个可写目录。 Yii负责资产。

通过调用Yii::app()->assetManager->publish(),可以将一些样式表,图像,脚本甚至整个目录放入Web可见文件夹中。

pager.css和其他不熟悉的文件由小部件(例如CLinkPager)生成,其他组件(例如CClientScript在需要时发布jQuery)。

在部署期间,此文件夹应为空,但这并不重要。

永远不应该通过框架文件夹来添加插件。您可以将它们放在components目录中,并在必要时将其发布到运行时,或者放到任何其他方便的可见目录中(例如imagescss)。

更新

要嵌入jquery.charcounter.js,请将其放在components目录中,然后调用

Yii::app()->clientScript->registerScriptFile(
    Yii::app()->assetManager->publish(
        Yii::getPathOfAlias('application.components').'/jquery.charcounter.js'
    ),
    CClientScript::POS_END
);

关于奇怪的文件夹名称,我坚信它们是唯一的哈希(或部分),因此如果应用程序使用多个扩展名,它们可以区分开来。

答案 1 :(得分:6)

这将解决查询,因为这提供了资产文件夹的详细说明:

http://www.yiiframework.com/wiki/148/understanding-assets/