#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