Нужно в контейнере сервиса, получить массив полей формы, в виде html кода.
Получаю все поля:
/**
* @var FormBuilderInterface
*/
private $builder;
/**
* @var \Twig_Environment
*/
private $twig;
// тут добавляем поля, как обычно...
$this->builder->add($name, $class, $setting);
...
// теперь их нужно получить и вывести:
$form = $this->builder->getForm();
$result = $this->twig->render('form/fields.html.twig', array('form' => $form->createView()));
Все супер, все работает:
посмотреть вывод $result:<div id="_q7" class="form-group">
<label class="control-label required"> Вопрос №1</label>
<div id="q7">
<div class="radio">
<label for="q7_0" class="required"><input type="radio" id="q7_0" name="q7" required="required" value="1" /> Да</label>
</div>
<div class="radio">
<label for="q7_1" class="required"><input type="radio" id="q7_1" name="q7" required="required" value="-1" /> Нет</label>
</div>
<div class="radio">
<label for="q7_2" class="required"><input type="radio" id="q7_2" name="q7" required="required" value="0" /> Неизвестно</label>
</div>
</div>
</div>
<div id="_q8" class="form-group">
<label class="control-label required"> Вопрос №2</label>
<div id="q8">
<div class="radio">
<label for="q8_0" class="required"><input type="radio" id="q8_0" name="q8" required="required" value="1" /> Да</label>
</div>
<div class="radio">
<label for="q8_1" class="required"><input type="radio" id="q8_1" name="q8" required="required" value="-1" /> Нет</label>
</div>
<div class="radio">
<label for="q8_2" class="required"><input type="radio" id="q8_2" name="q8" required="required" value="0" /> Неизвестно</label>
</div>
</div>
</div>
Теперь хочу получить те же поля формы, только последовательно, в цикле.
Пробую сделать так:
$form = $this->builder->getForm();
$items = $form->all();
foreach ($items as $item) {
$result[] = $this->twig->render('form/fields.html.twig', array('form' => $item->createView()));
}
и получаю следующее:<!-- $result[0] -->
<div class="form-group">
<div class="radio">
<label for="q7_0" class="required"><input type="radio" id="q7_0" name="q7" required="required" value="1" /> Да</label>
</div>
</div>
<div class="form-group">
<div class="radio">
<label for="q7_1" class="required"><input type="radio" id="q7_1" name="q7" required="required" value="-1" /> Нет</label>
</div>
</div>
<div class="form-group">
<div class="radio">
<label for="q7_2" class="required"><input type="radio" id="q7_2" name="q7" required="required" value="0" /> Неизвестно</label>
</div>
</div>
<!-- $result[1] -->
<div class="form-group">
<div class="radio">
<label for="q8_0" class="required"><input type="radio" id="q8_0" name="q8" required="required" value="1" /> Да</label>
</div>
</div>
<div class="form-group">
<div class="radio">
<label for="q8_1" class="required"><input type="radio" id="q8_1" name="q8" required="required" value="-1" /> Нет</label>
</div>
</div>
<div class="form-group">
<div class="radio">
<label for="q8_2" class="required"><input type="radio" id="q8_2" name="q8" required="required" value="0" /> Неизвестно</label>
</div>
</div>
А нужно, как в первом разе, только каждое поле - отдельным элементом массива.
Как это сделать?
Шаблон twig form/fields.html.twig:
{{ form_rest(form) }}