2017-07-13 168 views
1

在Symfony中,您可以定義塊來描述窗體類型的外觀。例如,ChoiceType(用於選擇,無線電,複選框)可以通過使這種類型的一個空HTML字符串應該出來的表單字段時產生這樣調用窗口小部件中的另一個窗口小部件會失去所有窗口小部件的屬性

{%- block choice_widget -%} 
{%- endblock choice_widget -%} 

的塊立即進行重新設計。

好的,現在讓我們來看看我的問題。我創建了一個FormType,它有一個布爾值選項short,它應該描述是否需要小部件或所有設置的簡短配置(只有1-2個設置)。

所以,我在做我的小部件

{%- block my_new_widget -%} 
{%- endblock my_new_widget -%} 

而且內部正在創造一個新的塊,我想這樣做

{%- block my_new_widget -%} 
    {% if short %} 
     // Do my stuff here 
    {% else %} 
     {{ block('choice_widget') }} 
    {% endif %} 
{%- endblock my_new_widget -%} 

因此,對於解釋:當短是假的,我只需要呈現默認choice_widget

這就是問題出現的地方。在我choice_widget我的第一行看起來像這樣

{%- if required and placeholder is none -%}

當我現在呈現my_new_widget我收到required沒有定義的錯誤。

只有當我告訴枝條自己渲染choice_widget塊時纔會發生這種情況。當我完全刪除my_new_widget,並讓它只呈現choice_widget它沒有問題。

在這兩種情況下,我的choice_widget都是def。所謂的,因爲當我加入這個到choice_widget

TEST {%- if required and placeholder is none -%}

TEST獲取輸出。所以它似乎使用正確的小部件,但是當我包含一個塊時,所有小部件屬性都會丟失。這是期望的行爲嗎?

回答

0

好吧,似乎有這個問題已經在GitHub

https://github.com/twigphp/Twig/issues/1302

而現在似乎要走的路是

{% with { 
    'collector': profile.getcollector(name), 
    'profiler_url': profiler_url, 
    'token': profile.token, 
    'name': name 
    } %} 
    {{ block('toolbar', template) }} 
{% endwith %} 
相關問題