Symfony2 / Twig - 如何将模板文件内容设置为变量?

时间:2016-03-10 12:14:16

标签: php symfony twig

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

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

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') %}

但我觉得这看起来不太好看。还有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

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

您可以在block('sidebar')声明中使用if

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

在检查内容之前确保该块存在,因此请使用空字符串初始化它:

{% block sidebar %}{% endblock %}