首页 > 解决方案 > 如何在 yii2 中使用子模板中的树枝管理资产?

问题描述

我想用一些资产包扩展我的基本树枝模板,并在子模板中添加新资产。

{# main.twig #}
register_asset_bundle('app/assets/AppAsset')

{# child.twig #}
{% extends 'layouts/main.twig' %}
register_asset_bundle('app/assets/NewAsset')

所以我收到错误“扩展另一个模板的模板不能包含 Twig 块之外的内容。您是否忘记将内容放在 {% block %} 标记内?” 那么我需要将每个资产设置为块吗?当我使用资产包时,这很不舒服。谷歌对此没有一个解决方案,在这种情况下我该怎么办?

标签: phpyii2twig

解决方案


子模板要求其内容严格包含在block标签中。引擎用父块替换子块中定义的块。

因此,您的main.twig模板应至少包含一个block,例如:

register_asset_bundle('app/assets/AppAsset')
{% block content %}{% endblock %}

这样孩子就可以按如下方式覆盖它:

{% extends 'layouts/main.twig' %}
{% block content %}
    register_asset_bundle('app/assets/NewAsset')
    {# More content here #}
{% endblock %}

无论您放入父模板中的“内容”块中的任何内容,都将替换为子模板中定义的该块的内容。


推荐阅读