Массив данных не работает в symfony CreateForm

#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