Twig / Symfony2动态模板

时间:2013-04-08 08:10:06

标签: symfony twig

我想做这种事情,以便如果模板不存在,它只是呈现内容。下面的代码不起作用,因为你不能这样编码。

{% if app.request.attributes.get('twig_parent_template') != "" %}
    {% extends app.request.attributes.get('twig_parent_template') %}
    {% block title "The Title Here" %}
{% endif %}

{% block content %}
Content here
{% endblock %}

我能以某种方式做这件事吗?

1 个答案:

答案 0 :(得分:3)

Twig extends有关于此主题的良好文档。

由于您需要指定要扩展的模板,我的想法是继续创建默认模板。

@捆绑/资源/视图/ yourview.html.twig

{% set extender = app.request.attributes.get('twig_parent_template') ? : 'Bundle::default.html.twig' %}
{% extends extender %}

{% block title "Your title" %}
{% block content %}
    Your content
{% endblock %}

@捆绑/资源/视图/ default.html.twig

{% block content %}{% endblock %}

@捆绑/资源/视图/ parent.html.twig

{% block title %}{% endblock %}
{% block content %}{% endblock %}

这样做,如果设置了app.request.attributes.get('twig_parent_template'),它将呈现其值中给出的模板 否则,它将呈现仅包含default.html.twig

content