たとえば、新しいページを作成し、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',
];
}
何が間違っているのでしょうか?
ベストアンサー1
理解するのに少し時間がかかりましたが、以下は関連部分Yii2のソースコード
if ($this->sourcePath !== null && !isset($this->basePath, $this->baseUrl)) {
list ($this->basePath, $this->baseUrl) = $am->publish($this->sourcePath, $this->publishOptions);
}
$sourcePath
したがって、Yii2 はが設定されていて、$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',
];
}
もちろんメインレイアウトには
use frontend\assets\AppAsset;
...
AppAsset::register($this);