Yii不会自动发布变更资产

时间:2014-03-13 14:48:20

标签: php yii

我正在使用远程Ubuntu网络服务器开发Yii项目。

我已经更改了通过AssetManager发布的Javascript文件。该文件已上传到网络服务器,但AssetManager未检测到新文件并重新发布该资产。

标准建议是删除资产文件夹的内容 - 但是如果我删除已发布的文件版本,它就不会替换它 - 我只是在浏览器中找到了一个找不到文件的错误。 / p>

我猜我在某个地方有一些权限错误,但是(因为它是开发服务器)甚至修改为777并没有解决这个问题 - 任何人都知道我是如何得到的AssetManager能识别资产的变化吗?

下面的AssetManager代码:

$assetFolder = Yii::app()->getAssetManager()->publish(Yii::getPathOfAlias('alias.path.to.folder'));
Yii::app()->clientscript->registerScriptFile($assetFolder.'/assetname.js');

1 个答案:

答案 0 :(得分:1)

尝试以这种方式发布文件:

$cs = Yii::app()->clientScript;
$cs->registerScriptFile(Yii::app()->getAssetManager()->publish('path/to/file.js'));

如果文件已更改,此函数会自动将文件发布到assets文件夹,并使用<script>文件夹中的脚本文件的相应路径将assets标记添加到HTML中。

如果您尝试发布文件夹,则assetManager将不会跟踪此文件夹中文件的更改并仅发布一次。或者,您可以在publish()函数中传递参数$ forceCopy,以便每次都重新发布文件夹。

http://www.yiiframework.com/doc/api/1.1/CAssetManager#publish-detail