【问题标题】:Symfony2/Twig - how to set template file contents as variable?Symfony2/Twig - 如何将模板文件内容设置为变量?
【发布时间】:2016-06-25 06:45:25
【问题描述】:

在 Symfony 2.8 中,我有 SharedBundle,用于保存视图和我在其他包之间共享的其他内容,包括应该由其他包的视图扩展的整个布局。
该共享布局有一些典型的块,其中sidebar 块对于不同的包应该是不同的。

目前我做了一个丑陋的解决方法:

SharedBundle 侧边栏容器中:

{% if sidebarcontent is defined %}
    {{ sidebarcontent|raw }}
{% else %}
    SIDEBAR NOT FOUND
{% endif %}

在扩展共享主视图的每个视图中的其他包(此处:BundleA)中:

{% extends 'SharedBundle:layout.html.twig' %}
{% block sidebar %}
    {% include 'BundleA:_partials:sidebar.html.twig' %}
{% endblock %}
{% set sidebarcontent =  block('sidebar') %}

但我认为这看起来不太好。有没有更好的办法?

【问题讨论】:

    标签: php symfony twig


    【解决方案1】:

    我认为这是一种有效的方法。我能想到的唯一简化是不使用变量sidebarcontent

    您可以在if 语句中使用block('sidebar')

    {% if block('sidebar')|length > 0 %}
        {{ sidebarcontent|raw }}
    {% else %}
        SIDEBAR NOT FOUND
    {% endif %}
    

    在检查它的内容之前确保块存在,所以用一个空字符串初始化它:

    {% block sidebar %}{% endblock %}
    

    【讨论】:

    • 谢谢。我通过变量传递模板,因为实际渲染它的树枝是部分的,它包含在部分中,它包含在......等等。我前段时间发现我不能覆盖块,是包括覆盖模板。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    相关资源
    最近更新 更多