2012-06-13 4 views
0

У меня есть форма виджет с несколькими выборами (многие-ко-многим) в шаблоне веточки я итерация над флажками:Symfony2 Twig Форма Widget массив Доступ

{% for choice in form.downloads %} 
      {{ form_widget(choice) }} {{ form_label(choice) }}<br /> 
    {% endfor %} 

я хотел бы Acces выбор непосредственно (они должны bị отформатированный конец расположен по-разному) Я попробовал несколько синтаксиса, но не работает

{{ form_widget(form.downloads.0) }} {{ form_label(form.downloads.0) }}<br /> 
{{ form_widget(form.downloads['0']) }} {{ form_label(form.downloads['0']) }}<br /> 
{{ form_widget(form.downloads[0]) }} {{ form_label(form.downloads[0]) }}<br /> 

ли я использовать неправильные ключи массива или доступ к массиву в целом не представляется возможным?

ответ

2

Доступ к массиву возможен, если вы используете Twig. Я предполагаю, что ошибку, которую вы получили, когда вы пытаетесь получить доступ к первому сгенерированного флажка с помощью

{{ form_widget(form.downloads.0) }} {{ form_label(form.downloads.0) }}<br /> 

является

Method "0" for object "Symfony\Component\Form\FormView" does not exist in ... 

Итак, вы только использовать имя ребенка вашего флажка. Вы должны иметь в своем buildForm что-то вроде:

$builder->add('childName', 'anyTypeYouWant', array()) 

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

{{ form_widget(form.downloads.0) }} {{ form_label(form.downloads.0) }}<br /> 

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

Вы должны также использовать расширение отладки прут, чтобы проверить form.downloads

{% debug form.downloads %} 

и если отладки не работает, вы, чтобы добавить в ваш «приложение/Config/конфигурации. YML»файл

services: 
    debug.twig.extension: 
     class: Twig_Extensions_Extension_Debug 
     tags: [{ name: 'twig.extension' }] 
+0

Я узнал, ключи начинают не с 0, а с 3 - довольно случайным образом, действительно не имеет объяснение этому – jeff

+0

вы можете просто обновить свой вопрос и поставить код, который вы используете для генерации Форма. (ваш buildForm) –

+0

ok, вычисленный: ключи не являются случайными, они являются моими идентификаторами загрузок в базе данных – jeff

Смежные вопросы