我的site.css
变成了web/css/
我在这里声明过
namespace frontendassets;
use yiiwebAssetBundle;
class AppAsset extends AssetBundle
{
public $basePath = '@webroot';
public $baseUrl = '@web';
public $css = [
'css/site.min.css'
];
}
我如何得到AssetBundle
复制到资产文件夹,使其看起来像这样
<link href="/frontend/web/assets/2edj2hj2jk/css/site.css" rel="stylesheet">
而不是这个?
<link href="/frontend/web/css/site.css" rel="stylesheet">
还是有其他方法来实现这一点?基本上,我希望web/css
,web/images
和web/js
中的所有内容都保存在assets文件夹
如果你真的想将这些资源复制到/web/assets
文件夹中,那么你所需要做的就是使用$sourcePath
属性而不是$basePath
和@baseUrl
属性。
你应该把images
,css
和js
文件夹从web
文件夹移到其他地方,因为AssetManager
会复制$sourcePath
中引用的文件夹的全部内容。
假设你把它移到frontend/resources
.
namespace frontendassets;
use yiiwebAssetBundle;
class AppAsset extends AssetBundle
{
public $sourcePath = '@frontend/resources';
public $css = [
'css/site.min.css'
];
}
但是实际上你不应该这样做。AssetManager
将资源复制到web/assets
文件夹中,以允许直接访问通常无法访问的文件,因为它们隐藏在widgets
,modules
或vendor
文件夹中。如果你的资源文件已经在web
文件夹中,这是由web服务器公开的,那么没有必要将它们复制到其他地方。
你甚至会使它更难从你的视图文件引用图像,因为web/assets
文件夹的哈希子文件夹的名称是不固定的,它可以改变当你的资源文件的变化。