У меня возникли проблемы с использованием Form builder в Symfony2. Точнее, мне нужно поле ввода, которое представляет собой html-массив, но я не могу создать его с помощью createFormBuilder-> add. Вот что я пробовал:
$attributesForm = $this->createFormBuilder() ->add('attribute[0]', 'text') ...
И так далее, но я получаю следующее исключение:
Имя «attribute [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>
Помогите?
Вы можете создать массив полей ввода, используя тип поля 'collection'.
Документацию о том, как ее использовать, можно найти здесь:
Сборная документация
Если это недостаточно ясно или у вас остались вопросы, я с удовольствием помогу вам с ними.
Как сказано в предыдущем ответе, используйте тип коллекции или вложенную форму, где каждое поле соответствует одной записи массива. И в тех случаях, когда вы не можете / не хотите этого делать, вы можете сделать следующее:
->add('attribute_0', 'text', array( 'property_path' => 'attribute[0]', ))
Также вы можете ovveride поле в TWIG. Пример:
{{ form_row(form[field_name],{ 'full_name': 'attribute[' ~ step ~ ']' })}}
Где шаг – ваш индекс.