2016-11-29 6 views
2

私はYii2拡張を作成しようとしており、拡張フォルダからCSSファイルを登録したいだけです。Yii2 vendorCssFileのベンダーURL

CSSファイルディレクトリは次のとおりです。project_folder\vendor\extension-ven\extension-name\assets\css\main.css

私が使用registerCssFile機能でなければなりません。

public void registerCssFile ($url, $options = [], $key = null) 

私は、registerCssFile関数でurlに書き込む必要があります。エイリアスを使用できませんYii::getAlias('@vendor/extension-ven/extension-name/assets/css/main.css');

エイリアスのように使用していますが、私にベンダーのURLを教えてもらえますか?

おかげ

+0

あなた自身の拡張機能を構築しようとしていますか、サードパーティの拡張機能を使用しようとしていますか? – sm1979

答えて

1

それを行うための推奨方法は、次のとおりです。

  1. は、拡張のためのjscssファイルをAssetクラスを準備します。 Example here
  2. アセット内にsourcePathというアセットを追加すると、アセットフォルダ(basePathbaseUrlのプロパティを削除)が指定されます。あなたの拡張クラスで

    public $sourcePath = '@vendor/extension-ven/extension-name/assets'; 
    
  3. (これはWidgetあるすなわち場合は、run()方法でそれを行うことができます。これはあなたの拡張がWidgetクラスのようなViewContextInterfaceインタフェースを実装すると仮定し)あなたのAssetクラスを登録します。

    YourAssetName::register($this->view); 
    
  4. 拡張子が呼び出されたときにすべてのアセットファイルは自動的にパブリックwebフォルダ内のassetsフォルダにソースフォルダからコピーされます。

+0

それは行く方法です。いくつかのことがあります。拡張がウィジェットであると仮定すると、拡張クラスは 'Component'クラスではなく' yii \ base \ Widget'クラスから技術的に拡張されるべきです。参照:http://www.yiiframework.com/doc-2.0/guide-structure-widgets.html#creating-widgetsまた、アセットを登録するには、 '$ this-> getView()'の代わりに '$ this - >ビュー。したがって、アセットを登録する正しい呼び出しは、 'YourAssetName :: register($ this-> getView());' – sm1979

+1

@ sm1979 'ウィジェット'は 'Component'を拡張するので、' Widget'は 'Component'も拡張しますが、私の答えは 'Component'で' ViewContextInterface'に置き換えてください。 'Component'を拡張しているので、' $ this-> getView() 'の代わりに' $ this-> view'を使うことができます(これは同じです)。 – Bizley

関連する問題