如何重命名 yii\web\YiiAsset 文件名

问题描述

我使用的是 Yii2 框架,我不知道如何从 yii\web\YiiAsset 重命名文件名。 yii 自动web/assets 文件夹中生成文件。有可能吗?

enter image description here

解决方法

您可以覆盖 yii\web\AssetManager::hash($path)

class MyAssetManager extends yii\web\AssetManager{
    protected function ($path) {
        return hash('md4',$path);
    }
}

此外,您还可以设置 $hashCallbackread this

您可以在 aftercopy 上重命名资产文件:

'assetManager' => [
    'forceCopy'  => true,'afterCopy' => function ($from,$to) {
        if (basename($from) == 'site.css') {
            rename($to,dirname($to) . DIRECTORY_SEPARATOR . 'newname.css');
        }
    },],

或使用“mysite.css”代替“site.css”使用assetMap

'assetManager' => [
    'assetMap'   => [
        'site.css' => 'mysite.css',

如果以上都不能解决您的问题,您将不得不覆盖 AssetManager->publishDirectory($src,$options),它最终会默认调用 FileHelper::copyDirectory