Yii2 在应用程序引导属性下列出组件

Yii2 在应用程序引导属性下列出组件,yii2,Yii2,我正在处理一个模块扩展,有一个名为的官方组件,我正在尝试配置它 文档说我需要在components和bootstrap 将组件添加到应用程序配置中 'jsUrlManager' => [ 'class' => \dmirogin\js\urlmanager\JsUrlManager::class, ], 向引导添加组件 'bootstrap' => ['jsUrlManager'], 这意味着我的配置将如下所示 [ 'components'=>

我正在处理一个模块扩展,有一个名为的官方组件,我正在尝试配置它

文档说我需要在
components
bootstrap

  • 将组件添加到应用程序配置中

    'jsUrlManager' => [
        'class' => \dmirogin\js\urlmanager\JsUrlManager::class, 
     ],
    
  • 向引导添加组件

    'bootstrap' => ['jsUrlManager'],
    
  • 这意味着我的配置将如下所示

    [
        'components'=>[
    
          //...other components
    
          'jsUrlManager' => [
               'class' => \dmirogin\js\urlmanager\JsUrlManager::class,
           ],
    
          //...other components
        ],
        'bootstrap'=>['jsUrlManager']
    ]
    
    这很简单,但是如果我在下面的模块下列出组件呢

    [
        'modules' => [
            'idows' => [
                'class' => 'path\to\Module',
                'components' => [
                    'jsUrlManager' => [
                        'class' => \dmirogin\js\urlmanager\JsUrlManager::class,
                    ],
                ],
            ],
        ],
        'bootstrap' => [
            'jsUrlManager',
        ],
    ]
    
    当我像上面那样实现它时,它会抛出下面这样的异常

    [
        'modules' => [
            'idows' => [
                'class' => 'path\to\Module',
                'components' => [
                    'jsUrlManager' => [
                        'class' => \dmirogin\js\urlmanager\JsUrlManager::class,
                    ],
                ],
            ],
        ],
        'bootstrap' => [
            'jsUrlManager',
        ],
    ]
    
    无效配置–yii\base\InvalidConfigException

    未知的引导组件ID:jsUrlManager


    那么,当组件ID附加在模块的
    组件
    部分下时,如何在
    引导属性下列出组件ID,而不是默认的
    组件
    您应该使用闭包来引导组件:

    'bootstrap' => [
        'jsUrlManager' => function ($app) {
            return $app->getModule('idows')->get('jsUrlManager');
        },
    ],