8

Yii2 フレームワークで Web アプリを作成しています。定義された (拡張された) 新しい AssetBundle

class NeonAsset extends AssetBundle {
   public $sourcePath = '@app/themes/neon/';

   public $css = [
    'css/font-icons/entypo/css/entypo.css',
    '...',
    '...'        
   ];

   public $js = [
      'js/be_in_head_tag.js',
      '...',
      '...',
   ];
}

レンダリングすると、CSS ファイルは<head>タグで公開され、JS ファイルは<body>タグの下部で公開されます。大丈夫です。しかし、単一のファイルをタグで公開し
たい。使用すると、すべての JS ファイルがタグに移動します。 1つのファイルだけにオプションを付けることはできますか?be_in_head_tag.js<head>$jsOptions<head>

4

3 に答える 3

0

それを行う公式の方法があるかどうかはわかりませんが(おそらく、optionsオブジェクトの仕様が過度に複雑になるためではないでしょう)、別のAssetBundle.

必要なことは、別の配列を作成することだけです。次に例を示します。

public $head_js =
[
  "path/to/src.js"
];

registerAssetFiles次に、関数を次のようにオーバーライドします。

public function registerAssetFiles($view)
{
  foreach($this->head_js as $js)
  {
    $options = [];
    $options["position"] = \yii\web\View::POS_HEAD;
    $url = Url::to($this->baseUrl . "/" . $js);
    $view->registerJsFile($url, $options);
  }

  parent::registerAssetFiles($view);
}
于 2016-12-13T12:52:16.013 に答える