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

Mil*_*kov 12 php assets jquery-plugins yii

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

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

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

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

pes*_*taa 22

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

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

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

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

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

更新

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

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

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

  • 它创建路径的哈希值(可以是`/ very/deep/linking/path`)并发布到该新目录.这意味着未显示目录结构(更重要的是,您可以发布通常不可通过Web访问的资产).您还可以扩展assetManager以自动压缩CSS/JS文件(请参阅cookbook). (3认同)

小智 6

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

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