2015-09-14 8 views
0

Symfony2 использует некоторые шаблоны для завивки при создании форм. В частности, для того, чтобы визуализировать выбор поле формы разрушилось, Symfony2 использует следующий фрагмент кода (от form_div_layout.html.twig):Symfony2 twig forms

{%- block choice_widget_collapsed -%} 
    {%- if required and placeholder is none and not placeholder_in_choices and not multiple -%} 
     {% set required = false %} 
    {%- endif -%} 
    <select {{ block('widget_attributes') }}{% if multiple %} multiple="multiple"{% endif %}> 
     {%- if placeholder is not none -%} 
      <option value=""{% if required and value is empty %} selected="selected"{% endif %}>{{ placeholder != '' ? placeholder|trans({}, translation_domain) }}</option> 
     {%- endif -%} 
     {%- if preferred_choices|length > 0 -%} 
      {% set options = preferred_choices %} 
      {{- block('choice_widget_options') -}} 
      {%- if choices|length > 0 and separator is not none -%} 
       <option disabled="disabled">{{ separator }}</option> 
      {%- endif -%} 
     {%- endif -%} 
     {%- set options = choices -%} 
     {{- block('choice_widget_options') -}} 
    </select> 
{%- endblock choice_widget_collapsed -%} 

В моем приложении, я хочу, чтобы создать новый тип формы, который расширяет тип по умолчанию для свертывания по умолчанию, но там, где у списка выбора есть собственное форматирование.

Другими словами, для моего типа поля формы, названный places_widget, простирающейся choice_widget_collapsed блок, но переосмысление choice_widget_options.

Я уже пробовал:

/* My first attempt */ 
{%- block places_widget -%} 
    {% block choice_widget_options %} 
     {{ block('choice_places_widget_options') }} 
    {% endblock choice_widget_options %} 

    {{ block('choice_widget_collapsed') }} 
{%- endblock places_widget -%} 

/* My other attempt */ 
{%- block places_widget -%} 
    {{ block('choice_widget_collapsed', { 'choice_widget_options' => choice_places_widget_options }) }} 
{%- endblock places_widget -%} 

/* together with */ 
{%- block choice_places_widget_options %} 
    // code here 
{%- endblock choice_places_widget_options -%} 

Ни один из этих двух решений не работает, а на самом деле у меня есть чувство, что я делаю вещи в неправильном направлении.

Есть ли у кого-нибудь идеи о том, как достичь цели? Спасибо заранее

+0

Вы фактически используете {% - -%} в качестве тегов? –

ответ

0

Формы могут быть настроены с помощью темы (см документа здесь: http://symfony.com/doc/current/cookbook/form/form_customization.html#form-theming-in-twig)

В вашем случае, это, кажется, вам нужно загрузить свою собственную тему с: {% form_theme form _self %}

Обратите внимание, что вы можете экрнализировать эти блоки в другом файле (см. http://symfony.com/doc/current/cookbook/form/form_customization.html#method-2-inside-a-separate-template, чтобы узнать, как это сделать)