Php RegisterCSS文件的Yii2供应商url
我正在尝试做一个Yii2扩展名,只想从扩展名文件夹注册一个css文件 Css文件目录是:Php RegisterCSS文件的Yii2供应商url,php,url,yii,yii2,vendor,Php,Url,Yii,Yii2,Vendor,我正在尝试做一个Yii2扩展名,只想从扩展名文件夹注册一个css文件 Css文件目录是:project\u folder\vendor\extension-ven\extension-name\assets\Css\main.Css 我必须使用registercsfile函数 public void registerCssFile ( $url, $options = [], $key = null ) 我必须在registercsfile函数中写入url。我不能使用别名Yii::getAli
project\u folder\vendor\extension-ven\extension-name\assets\Css\main.Css
我必须使用registercsfile函数
public void registerCssFile ( $url, $options = [], $key = null )
我必须在registercsfile函数中写入url。我不能使用别名Yii::getAlias('@vendor/extension-ven/extension-name/assets/css/main.css')代码>
有没有什么方法可以像alias一样使用,但给我一个供应商url
谢谢推荐的方法是:
使用扩展名的js
和css
文件准备Asset
类李>
在内部添加指向资产文件夹的sourcePath
属性(删除basePath
和baseUrl
属性)
在扩展类中注册资产
类(即,如果这是小部件
,则可以在run()
方法中执行;这假设扩展实现了ViewContextInterface
类似小部件
类的接口)
调用扩展名时,所有资产文件将自动从源文件夹复制到公共web
文件夹中的assets
文件夹
你能澄清一下吗?你是在尝试建立自己的扩展还是在尝试使用第三方扩展?这是一条路要走。只有几件事-假设扩展是一个小部件,那么他的扩展类在技术上应该从yii\base\widget
类扩展,而不是从Component
类扩展。参考:为了注册资产,我们应该使用$this->getView()
而不是$this->view
。因此,注册资产的正确调用应该是yourasetname::register($this->getView())
@sm1979Widget
扩展了Component
所以扩展Widget
也扩展了Component
,但是我应该更改我关于Component
的答案,并用ViewContextInterface
替换它。因为它扩展了组件
,所以可以使用$this->view
而不是$this->getView()
(反正是一样的)。
public $sourcePath = '@vendor/extension-ven/extension-name/assets';
YourAssetName::register($this->view);