Symfony 3.3 Заполнение раскрывающегося списка ChoiceType из таблицы базы данных

Я пытаюсь заполнить раскрывающееся меню в форме из базы данных. Метки выбора идут нормально, но я не могу вернуть правильные значения (идентификаторы) для этих параметров в раскрывающемся списке. Как написать код для «выборов» в следующем?

public function newModelAction(Request $request)
    {
        $product = $this->getDoctrine()
        ->getRepository('coreBundle:brand')
        ->findAll();


        if (!$product) {
            throw $this->createNotFoundException(
                'No product found for id '.$productId
                );
        }

        $model = new model();
        $form = $this->createFormBuilder($model)
        ->add('brand_id',ChoiceType::class,array(
            'label'=>'Brand Name',
            'choices'=>array($product),
            'choice_label' => function($product, $key, $index) {
            return strtoupper($product->getName());
            },
            ))
        ->add('name',TextType::class,array('label'=>'Model Name'))
        ->add('comment',TextType::class,array('label'=>'Comments'))
        ->add('save',SubmitType::class, array('label'=>'Add Model'))
        ->getForm();


        $form->handleRequest($request);
        if ($form->isSubmitted() && $form->isValid()) {

            $em = $this->getDoctrine()->getManager();
            $em->persist($model);
            $em->flush();
            return $this->render('coreBundle:layouts:newItem.html.twig',
                array('form'=>$form->createView(),));
        }


        // ... do something, like pass the $product object into a template
        return $this->render('coreBundle:layouts:newModel.html.twig',
            array('form'=>$form->createView(),));

    }

Изображение формы, выбор заполняется из базы данных, но не возвращает идентификатор при отправке

введите здесь описание изображения

Я получаю следующее исключение:

Исключение произошло при выполнении «ВСТАВИТЬ В модель (brand_id, name, image_url, comment) VALUES (?, ?, ?, ?)» с параметрами [null, «ABC», null, «XYZ»]: SQLSTATE[23000]: Нарушение ограничения целостности: 1048 Столбец "brand_id" не может быть нулевым

Не обращайте внимания на то, что Image_url равен нулю,


person XEnterprise    schedule 13.06.2017    source источник
comment
Все то же исключение   -  person XEnterprise    schedule 13.06.2017


Ответы (1)


первое решение: измените ChoiceType на EntityType и передайте объект вашей модели в свою форму, чтобы symfony мог выполнять сопоставление самостоятельно

второе решение: получите brand_id с помощью form->getData() и установите его в объект вашей модели.

person t-n-y    schedule 13.06.2017
comment
-›add('brand_id',EntityType::class,array( 'label'=›'Brand Name', 'class' =› 'coreBundle:brand', 'choice_label'=›'name' )) Все та же проблема - person XEnterprise; 13.06.2017