Из запроса я пытаюсь персонализировать поле выбора.
вот как я получаю содержимое выбора:
$em = $this->getDoctrine()->getManager();
$query2 = $em->createQuery("SELECT p.id,p.nombre FROM Exppromociones p");
$productos = $query2->getArrayResult();
Таблица должна выглядеть так:
{"id":93,"nombre":"Bucket"},
{"id":152,"nombre":"Spoon"},
{"id":142,"nombre":"Fork"}
С переменной $ productos я создаю форму:
$form = $this->createFormBuilder()
->add('productos', 'choice', array('label' => 'Productos',
'required' => true,
'choices' => $productos,
))
->getForm();
И эта форма приводит к:
<optgroup label = "0">
<option value = "id">93</option>
<option value = "nombre">Bucket</option>
</optgroup>
Я хочу, чтобы поле выбора имело значение, равное id, а innerHTML, равное nombre, например:
<option value=93>Bucket</option>
@u_mulder Symfony2 не имеет choice_label
Symfony 2 имеет choice_label: symfony.com/doc/2.8/reference/forms/types/choice.html
У него есть один, но он не поможет вам в решении этой проблемы. Просто нужно настроить свой массив в соответствии с примером в документации.
Извините, я сейчас чувствую себя очень глупо, это Symfony 2.3, я новичок в этом






Я сохранил тот же запрос
$em = $this->getDoctrine()->getManager();
$query2 = $em->createQuery("SELECT p.id,p.nombre FROM Exppromociones p");
$productos = $query2->getArrayResult();
но перед созданием своего конструктора форм я инициализирую массив, извлекаю идентификатор и номер из "$ productos" и загружаю их в $ choices
$choices=array();
foreach ($categorias as $cat){
$id=$cat['id'];
$nombre=$cat['nombre'];
$choices[$id] = $nombre;
}
$form = $this->createFormBuilder()
->add('categoria', 'choice', array('label' => 'Categoria',
'required' => true,
'choices' => $choices,
))
->getForm();
Теперь мои варианты выглядят так
<option value=93>Bucket</option>
Недвижимость
choice_labelвам поможет.