たとえば、新しいページを作成しました。たとえば、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',
];
}
何が間違っていますか?
それを理解するのにしばらく時間がかかりましたが、以下はYii2ソースコードの 関連部分 です
if ($this->sourcePath !== null && !isset($this->basePath, $this->baseUrl)) {
list ($this->basePath, $this->baseUrl) = $am->publish($this->sourcePath, $this->publishOptions);
}
したがって、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',
];
}
もちろん、メインレイアウトには
use frontend\assets\AppAsset;
...
AppAsset::register($this);
このAppAssetまたはその他を使用するには、viewで登録する必要があります
use app\assets\AppAsset;
AppAsset::register($this);
最初に、新しいjsファイルとcssファイルを使用してapp/assets /フォルダーにSomeAssetクラスを作成する必要があります。プロパティをオーバーロードしてAppAssetを拡張できます。
次に、SomeControllerでこれを使用します
use Yii;
use app\assets\SomeAsset;
そして、このようなもの:
SomeAsset::register(Yii::$app->view);