0

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

{% 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 %}

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

4

1 回答 1

3

Twig extends关于这个主题有一个很好的文档。

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

@Bundle/Resources/views/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 %}

@Bundle/Resources/views/default.html.twig

{% block content %}{% endblock %}

@Bundle/Resources/views/parent.html.twig

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

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

于 2013-04-08T08:36:08.290 回答