我一直在尝试从项目的前端和后端加载一个简单的CSS(custom.CSS),但我并没有真正感到痛苦。
css位于:
frontend/views/web/css/custom.css
它在前端加载时没有问题。。。这是位于前端的AppAsset文件:
<?php
namespace frontendassets;
use yiiwebAssetBundle;
/**
* Main frontend application asset bundle.
*/
class AppAsset extends AssetBundle
{
public $basePath = '@webroot';
public $baseUrl = '@web';
public $css = [
'css/site.css',
'css/custom.css',
];
public $js = [
];
public $depends = [
'yiiwebYiiAsset',
'yiibootstrapBootstrapAsset',
];
}
所以我只是觉得位于后端的AppAsset文件应该是这样的:
<?php
namespace frontendassets;
use yiiwebAssetBundle;
/**
* Main backend application asset bundle.
*/
class AppAsset extends AssetBundle
{
public $basePath = '@webroot';
public $baseUrl = '@web';
public $css = [
'css/custom.css',
];
public $js = [
];
public $depends = [
'yiiwebYiiAsset',
'yiibootstrapBootstrapAsset',
];
}
但当加载后端索引时,我得到的只是:
http://localhost:8888/backend/web/css/custom.cssFailed to load resource: the server responded with a status of 404 (Not Found)
很抱歉收到noob的问题,并提前表示感谢。只是想在前端和后端之间共享一个css。
实现这一点的一种直接方法是在应用程序根目录下创建一个通用的web可访问文件夹。类似/assets的东西,您可以从后端和前端访问。你需要编辑你的.htaccess才能允许这样做。
Yii2只有在设置了$sourcePath,并且未设置$basePath和$baseUrl的情况下才会发布资产(!)
因此:
use yiiwebAssetBundle;
class AppAsset extends AssetBundle
{
public $sourcePath = '@app/assets/app';
public $css = [
'css/openbook.css',
'fontello/css/fontello.css',
'fontello/css/animation.css'
];
public $js = [
'js/plug.openbook.js',
'js/plug.interpret.js',
'js/plug.drop.message.js'
];
public $depends = [
// 'yiiwebYiiAsset',
// 'yiibootstrapBootstrapAsset',
];
}
在主布局中:
use frontendassetsAppAsset;
...
AppAsset::register($this);
如果你想加载共享资源,即js或css,在YourAsset类中,sourcePath必须是"@yourSource/web/",例如,如果你想在前端加载一个位于common/web/css/目录中的css文件,你的AppAsset或任何其他自定义资产类都位于common/必须有以下变量初始化
public$sourcePath="@common/web";public$basePath="@common";
注意:"@ewbroot"路径&baseUrl="@web"将定位到您当前的访问路径,在本例中为前端&将加载它"localhost/yii application/frontend/css/filename.css"所以你必须省略它。
您可以在任何视图或布局上注册文件本身
<?php $this->registerCssFile('http://domain.com/frontend/web/path/file.css');?>
或
您也可以在资产捆绑中添加完整路径
public $css = [
'http://domain.com/frontend/web/path/file.css',
];