【问题标题】:Yii not automatically publishing assets on changeYii 不会在更改时自动发布资产
【发布时间】:2014-03-13 14:48:20
【问题描述】:

我正在开发一个 Yii 项目,使用远程 Ubuntu 网络服务器进行开发。

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

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

我猜我在某处获得了一些权限错误,但是(因为它是一个开发服务器)即使 chmodding 到 777 也不能解决这个问题 - 有人知道我如何让 AssetManager 识别资产中的变化吗?

AssetManager 代码如下:

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

【问题讨论】:

    标签: php yii


    【解决方案1】:

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

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

    如果文件被更改,此功能会自动将文件发布到 assets 文件夹,并将 <script> 标记添加到您的 HTML 中,并带有从 assets 文件夹到脚本文件的适当路径。

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

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

    【讨论】:

    • 谢谢 - 我需要的魔法是我必须发布一个文件而不是文件夹
    猜你喜欢
    • 1970-01-01
    • 2013-10-18
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    • 2016-12-29
    • 2020-01-15
    • 1970-01-01
    • 2019-05-30
    相关资源
    最近更新 更多