![](/img/trans.png)
[英]Symfony2 twig throws render error on conditionally added form fields
[英]Symfony2/Twig: Error on conditionally render
我正在嘗試在樹枝模板上呈現表單,如果該表單在控制器上的render調用中定義的話。 就像是:
{% if form_to_be_rendered is defined %}
{{ form(form_to_be_rendered) }}
{% endif }
如果控制器的render調用包含form_to_be_rendered
的var,則一切運行良好,並且呈現了表單。 但是,如果我嘗試不使用此參數來呈現模板,則Twig會拋出RuntimeError
指示form_to_be_rendered
變量。
Variable "form_to_be_rendered" does not exist in BundleName:Path/to/template:template.html.twig at line 3
500 Internal Server Error - Twig_Error_Runtime
我嘗試過將其作為空值傳遞,並且在條件上is not null
檢查,但它也失敗。
我把這個轉儲放在模板上:
{% dump reset_password_form is defined %}
當我不將任何參數傳遞給render函數時,它將被評估為false
。
編輯
我忘記發布條件塊內有一個{% block content %}
的問題。 請查看下面的解決方案。
謝謝,
解決了。
這很奇怪,也是我的錯,因為我沒有在OP上發布完整的代碼。
{% if form is defined %}
{% block content%}
{{ form(form)}}
{% end block %}
{% endif %}
條件塊內部有{% block content %}
,即使條件被評估為false,Twig也會嘗試渲染該{% block content %}
。 如果我將條件塊與內容塊一起包圍,則此問題已解決。
{% block content%}
{% if form is defined %}
{{ form(form)}}
{% endif %}
{% end block %}
謝謝
你試過了嗎:
{% if form_to_be_renderer|length %}
{{ form(form_to_be_renderer) }}
{% endif %}
Twig文檔說:
定義:
define檢查在當前上下文中是否定義了變量。
空:
如果foo變量為null,false,空數組或空字符串,則計算結果為true。
空值:
如果變量為null,則null返回true。
因此,根據“ form_to_be_rendered”的值可以確定要檢查的內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.