2013-04-08 70 views
0

我想做這樣的事情,以便如果模板不存在,它只呈現內容。下面的代碼不會工作,因爲你不能這樣編碼。Twig/Symfony2動態模板

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

我可以以某種方式做這種事嗎?

回答

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

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

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

做這樣,如果app.request.attributes.get('twig_parent_template')設置,它會使它的價值給出的模板。
否則,它將渲染default.html.twig只包含content