如何在Yii2中注册小部件资产?

Tel*_*uko 2 css assets widget yii2

我想用它的css和js文件在yii2中创建一个自定义小部件。在“ components”文件夹中,我已经创建了一个“ myWidget”文件夹,并且在其中:-myWidget.php,扩展了yii \ base \ Widget。-myWidgetAsset.php,扩展了yii \ web \ AssetBundle。-包含index.php文件的views文件夹。-包含main.css和main.js文件的资产文件夹。

以下是代码:myWidget.php

namespace app\components\myWidget;

use app\components\tablaFoS\tablaFoSAsset;
use app\models\DisciplinesGrandesAreas;
use yii\base\Widget;

class myWidget extends Widget {

   public function run() {
    parent::run();

    return $this->render('index');
   }
}
Run Code Online (Sandbox Code Playgroud)

myWidgetAsset.php

namespace app\components\myWidget;

use yii\web\AssetBundle;

class myWidgetAsset extends AssetBundle {

    public $basePath = '@webroot';
    public $baseUrl = '@web';
    public $css = ['assets/main.css'];
    public $js = ['assets/main.js'];
    public $depends = [
    ];
}
Run Code Online (Sandbox Code Playgroud)

当我看到生成的代码时,我得到:

<link rel="stylesheet" href="/assets/main.css"></link>
<script src="/assets/main.js"></script>
Run Code Online (Sandbox Code Playgroud)

而不是像egbootstrap这样的东西:

<link href="/becyt/assets/67099f30/css/bootstrap.css" rel="stylesheet">
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我想念什么?提前致谢。

Jel*_*eij 5

您可以init()像这样在小部件的函数中注册AssetBundle :

public function init() {
    MyAssetBundle::register( $this->getView() );
    parent::init();
}
Run Code Online (Sandbox Code Playgroud)