Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php RegisterCSS文件的Yii2供应商url_Php_Url_Yii_Yii2_Vendor - Fatal编程技术网

Php RegisterCSS文件的Yii2供应商url

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

我正在尝试做一个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::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())
    @sm1979
    Widget
    扩展了
    Component
    所以扩展
    Widget
    也扩展了
    Component
    ,但是我应该更改我关于
    Component
    的答案,并用
    ViewContextInterface
    替换它。因为它扩展了
    组件
    ,所以可以使用
    $this->view
    而不是
    $this->getView()
    (反正是一样的)。
    public $sourcePath = '@vendor/extension-ven/extension-name/assets';
    
    YourAssetName::register($this->view);