Yii2 - 用树枝在全球范围内注册资产

时间:2018-04-11 18:05:33

标签: yii2 twig yii-extensions yii2-basic-app twig-extension

我的site\index.twig文件中有前两行。

{{ use('app/assets/AppAsset') }}
{{ register_app_asset() }}

我的疑问是,是否可以在config/web.php文件中执行此操作?

例如,我可以在{{ use('yii/bootstrap') }}中执行layout/main.twig,或者将以下代码添加到我的config/web.php文件中。

// setting up twig
'view' => [
    'class' => 'yii\web\View',
    'renderers' => [
        'twig' => [
            'class' => 'yii\twig\ViewRenderer',
                ...
                'uses' => [ 'yii\bootstrap' ],
        ],
    ],
],

所以我想知道是否还可以做些什么来注册资产。

1 个答案:

答案 0 :(得分:0)

如果您想自动注册此资产,可以在每次布局渲染之前使用beginPage event来调用app\assets\AppAsset::register()

但你可能不应该这样做。如果资产特定于您的布局,则应在布局级别注册(例如,在layouts/main.twig中)。如果您需要在应用中使用不同的布局(针对第三方模块的不同主题或布局,如调试模块),则在View级别全局注册它会给您带来很多问题。通常,您只有一个主文件用于布局,因此您需要放置

{{ use('app/assets/AppAsset') }}
{{ register_app_asset() }}

仅限于一个文件(layouts/main.twig)。即使您有多个布局,最好在每个文件中重复此操作,而不是创建一些神奇的解决方案来隐式执行此操作。