簡體   English   中英

Symfony2 / Twig:有條件渲染時出錯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM