Yii2 CSS到asset文件夹

u3r8eeie  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(104)

我的web/css/中有我的site.css
我在这里声明

namespace frontend\assets;
use yii\web\AssetBundle;
class AppAsset extends AssetBundle
{
    public $basePath = '@webroot';
    public $baseUrl = '@web';
    public $css = [
        'css/site.min.css'
    ];
}

如何让AssetBundle将其复制到assets文件夹中,使其看起来像这样?
<link href="/frontend/web/assets/2edj2hj2jk/css/site.css" rel="stylesheet">
而不是这个
<link href="/frontend/web/css/site.css" rel="stylesheet">
或者有没有其他方法可以实现这个目标?基本上,我希望web/cssweb/imagesweb/js中的所有内容都保存在assets文件夹中

fbcarpbf

fbcarpbf1#

如果您真的想将这些资源复制到/web/assets文件夹中,那么您所需要做的就是使用$sourcePath属性,而不是$basePath@baseUrl属性。
您应该将imagescssjs文件夹从web文件夹移动到其他位置,因为AssetManager将复制$sourcePath中引用的文件夹的全部内容。
假设您将其移动到frontend/resources中。

namespace frontend\assets;
use yii\web\AssetBundle;
class AppAsset extends AssetBundle
{
    public $sourcePath = '@frontend/resources';
    public $css = [
        'css/site.min.css'
    ];
}

但事实上,您不应该这样做AssetManager将资源复制到web/assets文件夹中,以允许直接访问通常无法访问文件,因为这些文件隐藏在widgets中,modulesvendor文件夹中。如果您的资源文件已经在web文件夹中,该文件夹由Web服务器公开,则无需将其复制到其他位置。
您甚至会使从视图文件中引用图像变得更加困难,因为web/assets文件夹的哈希子文件夹的名称不是固定的,当您的资源文件更改时,它可能会更改。

相关问题