Создать поле ввода массива с помощью 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-ваш индекс.