Yii2 CSS到asset文件夹

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

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

  1. namespace frontend\assets;
  2. use yii\web\AssetBundle;
  3. class AppAsset extends AssetBundle
  4. {
  5. public $basePath = '@webroot';
  6. public $baseUrl = '@web';
  7. public $css = [
  8. 'css/site.min.css'
  9. ];
  10. }

如何让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中。

  1. namespace frontend\assets;
  2. use yii\web\AssetBundle;
  3. class AppAsset extends AssetBundle
  4. {
  5. public $sourcePath = '@frontend/resources';
  6. public $css = [
  7. 'css/site.min.css'
  8. ];
  9. }

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

展开查看全部

相关问题