例如,我创建了一个新页面,我想使用例如backbone.js,自定义css文件和一些图像集合.我应该在哪里宣布Yii2中的所有这些东西?我找到了AppAsset.php模块,但这只适用于css/js文件,当我在那里声明我的css/js文件和路径时,我没有注意到任何变化:
class AppAsset extends AssetBundle {
public $basePath = '@webroot';
public $baseUrl = '@web';
public $css = [
'css/site.css',
'js/jquery.mobile-1.4.2.min.css',
];
public $js = [
'js/jsquery-2.1.0.min.js',
'js/jquery.mobile-1.4.2.min.js',
'js/script.js',
];
public $depends = [
'yii\web\YiiAsset',
'yii\bootstrap\BootstrapAsset',
];
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
Ivo*_*ema 31
我花了一段时间来弄明白,但下面是Yii2源代码的相关部分
if ($this->sourcePath !== null && !isset($this->basePath, $this->baseUrl)) {
list ($this->basePath, $this->baseUrl) = $am->publish($this->sourcePath, $this->publishOptions);
}
Run Code Online (Sandbox Code Playgroud)
所以Yii2将公布只有当资产$sourcePath
被置位,$basePath
并且$baseUrl
没有设置(!).后者绊倒了我,看起来你也一样.
所以我有这个适当发布的AppAsset
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',
];
}
Run Code Online (Sandbox Code Playgroud)
当然,我在主要布局中
use frontend\assets\AppAsset;
...
AppAsset::register($this);
Run Code Online (Sandbox Code Playgroud)