我在控制器中定義變量並將其傳遞給模板,但在extend
塊中不可見。最重要的控制器代碼:Twig(Symfony2)在「擴展」塊中看不到變量
$response['html'] = $this->renderView(
'AldenXyzBundle:Profile:edit_ajax.html.twig', array(
'isXmlHttpRequest' => $request->isXmlHttpRequest(),
)
);
和嫩枝模板
{% extends isXmlHttpRequest ? '::base-ajax.html.twig' : '::base.html.twig' %}
{% block content %}
...
{% endblock %}
,我有例外Variable "isXmlHttpRequest" does not exist in ...
而模板
{% extends '::base-ajax.html.twig' %}
{% block content %}
{{ dump(isXmlHttpRequest) }}
...
{% endblock %}
運作良好,並顯示正確的$isXmlHttpRequest
值。
我也是在模板直接嘗試:
{% extends app.request.isXmlHttpRequest ? '::base-ajax.html.twig' : '::base.html.twig' %}
但我得到了一個異常說app is undefined
。
我使用的symfony v2.0.15和樹枝v1.8.2的
從Twig 0.9.7開始可以使用此功能,你能檢查你使用的是什麼版本的樹枝嗎? – AdrienBrault 2012-07-07 10:25:31
在文章正文中添加了答案。 – koral 2012-07-07 10:30:29
您是否嘗試使用if語句而不是條件運算符? – 2012-07-07 14:15:51