我一直在尝试从项目的前端和后端加载一个简单的CSS(custom.css),这并不是一个真正的痛苦。
css位于:
frontend/views/web/css/custom.css
它在前端加载没有问题...这是位于前端的AppAsset文件:
<?php
namespace frontend\assets;
use yii\web\AssetBundle;
/**
* 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 = [
'yii\web\YiiAsset',
'yii\bootstrap\BootstrapAsset',
];
}
所以我只是认为位于后端的AppAsset文件应如下所示:
<?php
namespace frontend\assets;
use yii\web\AssetBundle;
/**
* Main backend application asset bundle.
*/
class AppAsset extends AssetBundle
{
public $basePath = '@webroot';
public $baseUrl = '@web';
public $css = [
'css/custom.css',
];
public $js = [
];
public $depends = [
'yii\web\YiiAsset',
'yii\bootstrap\BootstrapAsset',
];
}
但是我在加载后端索引时得到的是:
http://localhost:8888/backend/web/css/custom.cssFailed to load resource: the server responded with a status of 404 (Not Found)
对于noob问题表示歉意,感谢您提前。只是想在前端和后端之间共享一个CSS。
答案 0 :(得分:0)
执行此操作的一种直接方法是在app root下拥有一个通用的Web可访问文件夹。像/ assets这样的东西,你可以从BackEnd和FrontEnd访问它们。您需要编辑.htaccess以允许此操作。
仅当设置了$ sourcePath并且未设置$ basePath和$ baseUrl时,Yii2才会发布资产(!)
因此:
use yii\web\AssetBundle;
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 = [
// 'yii\web\YiiAsset',
// 'yii\bootstrap\BootstrapAsset',
];
}
在主要布局中:
use frontend\assets\AppAsset;
...
AppAsset::register($this);
答案 1 :(得分:0)
您可以在任何视图或布局本身上注册文件
<?php $this->registerCssFile('http://domain.com/frontend/web/path/file.css');?>
或
您还可以在资产包中添加完整路径
public $css = [
'http://domain.com/frontend/web/path/file.css',
];
答案 2 :(得分:0)
如果要加载共享资源,即js或css,在YourAsset类中,sourcePath必须是“@ yourSource / web /”, 例如,如果要在位于common / web / css /目录中的前端加载css文件,则AppAsset或任何其他自定义资产类共同驻留/必须具有以下变量初始化
public $ sourcePath =“@ common / web”; public $ basePath =“@ common”;
注意:“@ewbroot”路径&amp; $ baseUrl =“@ web”将定位到您当前的访问路径,在这种情况下它是前端 &安培;会加载它 “本地主机/ YII应用/前端/ CSS / filename.css” 所以你必须省略它。