2016-11-29 104 views
2

我試着做一個Yii2擴展,只是想從擴展文件夾註冊一個CSS文件。Yii2供應商url爲registerCssFile

CSS文件目錄是:project_folder\vendor\extension-ven\extension-name\assets\css\main.css

我必須使用registerCssFile功能。

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

什麼是我必須寫在url中registerCssFile函數。我不能使用別名Yii::getAlias('@vendor/extension-ven/extension-name/assets/css/main.css');

是否有任何方法,我用像別名,但給我一個供應商的網址?

感謝

+0

請你澄清一下 - 你是在嘗試構建自己的擴展還是試圖使用第三方擴展? – sm1979

回答

1

推薦的方式做到這一點是:

  1. 準備Asset類與jscss文件擴展名。 Example here
  2. Inside add sourcePath指向資產文件夾的屬性(刪除basePathbaseUrl屬性)。

    public $sourcePath = '@vendor/extension-ven/extension-name/assets'; 
    
  3. 在您的擴展類註冊Asset類(即,如果這是Widget你能做到這一點的run()方法,這是假定你的擴展實現ViewContextInterface界面像Widget類)。

    YourAssetName::register($this->view); 
    
  4. 所有資產文件從源文件夾中的文件夾assets在公共web文件夾時擴展稱爲自動複製。

+0

這就是要走的路。只有幾件事 - 假設擴展名是一個小部件,那麼他的擴展類在技術上應該從'yii \ base \ Widget'類擴展而不是'Component'類。參考:http://www.yiiframework.com/doc-2.0/guide-structure-widgets.html#creating-widgets另外註冊資產,我們應該使用'$ this-> getView()'而不是'$ this - > view'。因此,註冊資產的正確調用將是'YourAssetName :: register($ this-> getView());' – sm1979

+1

@ sm1979'Widget'擴展'Component'如此擴展'Widget'擴展'Component',但我應該改變我關於'Component'的回答,並用'ViewContextInterface'代替它。因爲它擴展了'Component',所以你可以使用'$ this-> view'而不是'$ this-> getView()'(它總是一樣的)。 – Bizley