Значение параметра Symfony2.3 и innerHTML поля выбора из запроса

Из запроса я пытаюсь персонализировать поле выбора.

вот как я получаю содержимое выбора:

    $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>

Я хочу, чтобы поле выбора имело значение, равное идентификатору, а значение innerHTML было равно номбре, например:

<option value=93>Bucket</option>

person Javier Heisecke    schedule 25.07.2018    source источник
comment
Недвижимость choice_label поможет вам.   -  person u_mulder    schedule 25.07.2018
comment
symfony.com/doc/current/reference/forms/ типы/   -  person Cerad    schedule 25.07.2018
comment
@u_mulder Symfony2 не имеет choice_label   -  person Javier Heisecke    schedule 25.07.2018
comment
В Symfony 2 есть метка selection_label: symfony.com/doc/2.8/reference/forms /types/choice.html   -  person BENARD Patrick    schedule 25.07.2018
comment
У него есть один, но он не поможет вам в решении этой проблемы. Просто нужно настроить свой массив в соответствии с примером в документах.   -  person Cerad    schedule 25.07.2018
comment
Извините, я сейчас чувствую себя очень глупо, это Symfony 2.3, я действительно новичок в этом   -  person Javier Heisecke    schedule 25.07.2018


Ответы (1)


Я сохранил тот же запрос

    $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>
person Javier Heisecke    schedule 25.07.2018