我正在使用远程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');
答案 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