Создать поле ввода массива с помощью Form builder symfony2

у меня возникли проблемы с использованием Form builder в Symfony2. Если быть точным, мне нужно поле ввода, которое является массивом html, но я не могу создать его с помощью createFormBuilder->add. Вот что я попробовал:

$attributesForm = $this->createFormBuilder()
        ->add('attribute[0]', 'text') ...

и так далее, но я получаю следующее исключение:

имя "атрибут[0]" содержит недопустимые символы. Имена должны начинаться с буквы, > цифры или подчеркивания и содержать только буквы, цифры, цифры, подчеркивания ( " _ "), дефисы > ( " - " ) и двоеточия (":").

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

спасибо заранее!

EDIT: чтобы уточнить это дальше... Я хочу, чтобы что-то подобное было создано:

<div id="msoft_adminbundle_offertype">
<div>Name <input type="text" name="name"></div>
<div>...</div>
<div>Attribute 0 <input type="text" name="attribute[0]"></div>
<div>Attribute 1 <input type="text" name="attribute[1]"></div>
<div>Attribute 3 <input type="text" name="attribute[3]"></div>
<ul>
    </ul>
<p>
    <button type="submit">Edit</button>
</p>

помочь?

3 ответов


вы можете создать массив входных полей, используя тип поля "коллекция".

документация о том, как ее использовать можно найти здесь:

сбор документации

Если это недостаточно ясно или у вас все еще есть вопросы, я с удовольствием помогу Вам с ними.


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

->add('attribute_0', 'text', array(
    'property_path' => 'attribute[0]',
))

также вы можете ovveride поле в веточке. Пример:

   {{ form_row(form[field_name],{ 'full_name':  'attribute[' ~ step ~ ']' })}} 

где step-ваш индекс.