#php #forms #symfony
Вопрос:
У меня есть этот тип формы :
lt;?php namespace AppForm; use AppRepositoryAppArreteItemRepository; use SymfonyComponentFormAbstractType; use SymfonyComponentFormExtensionCoreTypeChoiceType; use SymfonyComponentFormFormBuilderInterface; use SymfonyComponentOptionsResolverOptionsResolver; class ArreteItemOrderType extends AbstractType { private ArreteItemRepository $arreteItemRepository; public function __construct(ArreteItemRepository $arreteItemRepository) { $this-gt;arreteItemRepository = $arreteItemRepository; } public function buildForm(FormBuilderInterface $builder, array $options): void { $builder -gt;add('priority_vu', ChoiceType::class, [ 'choices' =gt; $this-gt;arreteItemRepository-gt;getOrderedPriority('vu', $options['demande_type']), 'choice_label' =gt; 'content', 'choice_value' =gt; 'id', 'mapped' =gt; false, 'multiple' =gt; true, 'attr' =gt; [ 'class' =gt; 'form-control', 'selected' =gt; true ] ]) -gt;add('priority_article', ChoiceType::class, [ 'choices' =gt; $this-gt;arreteItemRepository-gt;getOrderedPriority('article', $options['demande_type']), 'choice_label' =gt; 'content', 'choice_value' =gt; 'id', 'mapped' =gt; false, 'multiple' =gt; true, 'attr' =gt; [ 'class' =gt; 'form-control' ] ]) ; } public function configureOptions(OptionsResolver $resolver): void { $resolver-gt;setDefaults([ 'data_class' =gt; null ]); } }
В моем контроллере я хочу ввести выбранное значение по умолчанию, как это :
$vues = $arreteItemRepository-gt;getOrderedPriority('vu', $type); $articles = $arreteItemRepository-gt;getOrderedPriority('article', $type); $form = $this-gt;createForm(ArreteItemOrderType::class, [ 'priority_vu' =gt; $vues, 'priority_article' =gt; $articles ], ['demande_type' =gt; $type]); // NOT WORKING
Это не работает, параметры в поле выбрать не выбраны по умолчанию.
Но если я напишу это:
$vues = $arreteItemRepository-gt;getOrderedPriority('vu', $type); $articles = $arreteItemRepository-gt;getOrderedPriority('article', $type); $form = $this-gt;createForm(ArreteItemOrderType::class, null, ['demande_type' =gt; $type]); $form-gt;get('priority_vu')-gt;setData($vues); $form-gt;get('priority_article')-gt;setData($articles);
Это работает, параметры выбраны по умолчанию.
Можете ли вы помочь мне понять это, пожалуйста (почему с массивом это не работает) ?
Спасибо
Ответ №1:
Исправлено удалением этих строк:
'mapped' =gt; false