我想做这种事情,以便如果模板不存在,它只是呈现内容。下面的代码不起作用,因为你不能这样编码。
{% 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 %}
我能以某种方式做这件事吗?
答案 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