Динамическое создание поля типа выбора в Symfony 3

#php #symfony

#php #symfony

Вопрос:

Я совсем новичок в Symfony и ищу способ динамического создания поля типа выбора в форме.

На самом деле у меня есть несколько продуктов, которые я извлекаю с помощью query_builder в моей форме. После представления продукта и цены мне нужен выпадающий список выбора, чтобы пользователь мог выбрать количество продуктов для получения.

Фактически, в моей форме builder я извлекаю продукты благодаря построителю запросов и получаю /- 30 продуктов, но это число может измениться.

Проблема в том, что мне нужно столько выпадающих списков, сколько продуктов, до сих пор мой конструктор выглядел так :

         return $builder
        ->add('price', EntityType::class ,[
            'class'=> Price::class,
            'query_builder' => function (PriceRepository $pr) use ($goldenOptions, $currentCompany){
                return $pr->getPrice($goldenOptions, $currentCompany->getOrder()->getCompanyType(),  $currentCompany->getOnboardingRevenues(), true);
            },
            'expanded'=>true,
            'multiple'=>true,
            'placeholder'=>true 
        ])
        ->add('quantity',ChoiceType::class,[
            'choices'=>['mensuel'=>true,'trimestriel'=>false,'1'=>1,'2'=>2,'3'=>3,'4'=>4],
            'expanded'=>false,
            'multiple'=>false
        ])
        ->add('submit', SubmitType::class,[
            'attr' => ['class' => 'save'],
            'label'=>'Sauvegarder',
            'attr' => ['class' => 'btn btn-purple btn-rounded']
        ])
  

проблема в том, что таким образом я получаю только 1 выпадающий список, а мне нужно несколько. Мне удалось воспроизвести его с помощью javascript, но когда я обрабатываю запрос и получаю из него данные, Symfony распознает только первое поле «количество».

Если у кого-нибудь есть идеи о том, как я могу создать несколько полей ‘quantity’, и symfony распознал их, спасибо. Возможно, прослушиватель событий, но я понятия не имею, как я мог бы это сделать.

Ответ №1:

Я предполагаю, что это для какого-то приложения электронной коммерции, где у вас есть корзина с товарами и вы хотите выбрать количество.

У меня была бы сущность для «Корзины», которая содержит множество «CartProduct», каждый из которых имеет один «Product» в качестве отношения и другие атрибуты для количества и т.д.

С помощью этого вы можете создать CartForm, которая включает любое количество CartProductForm с указанием количества и т.д. для каждого из них.

Аналогично примеру в документах, где «Task» будет «Cart», а «Tags» — «CartProducts»:https://symfony.com/doc/current/form/form_collections.html