我的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/css
、web/images
和web/js
中的所有内容都保存在assets文件夹中
1条答案
按热度按时间fbcarpbf1#
如果您真的想将这些资源复制到
/web/assets
文件夹中,那么您所需要做的就是使用$sourcePath
属性,而不是$basePath
和@baseUrl
属性。您应该将
images
、css
和js
文件夹从web
文件夹移动到其他位置,因为AssetManager
将复制$sourcePath
中引用的文件夹的全部内容。假设您将其移动到
frontend/resources
中。但事实上,您不应该这样做
AssetManager
将资源复制到web/assets
文件夹中,以允许直接访问通常无法访问文件,因为这些文件隐藏在widgets
中,modules
或vendor
文件夹中。如果您的资源文件已经在web
文件夹中,该文件夹由Web服务器公开,则无需将其复制到其他位置。您甚至会使从视图文件中引用图像变得更加困难,因为
web/assets
文件夹的哈希子文件夹的名称不是固定的,当您的资源文件更改时,它可能会更改。