CollectionType со смешанным типом entry_type - PullRequest
1 голос
/ 23 сентября 2019

В Symfony 3 / PHP 7 мне нужна форма, которая принимает массив смешанного типа (string, int и array).Параметр "entry_type" для CollectionType принимает только уникальный тип.Как я могу иметь смешанный тип?

$builder
     ->add('value', CollectionType::class, array(
         'entry_type' => ?,
         'allow_add' => true,
         'allow_delete' => true,
     ));

1 Ответ

0 голосов
/ 23 сентября 2019

Вы можете использовать формы для встраивания.В своем пользовательском типе формы вы можете определить несколько полей ввода для своей потребности, а затем использовать его в своем типе CollectionType.

// src/Form/TagType.php
namespace App\Form;

use App\Entity\Tag;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;

class TagType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('string_field')
            ->add('int_field')
            ->add('whatever_field');
    }
}

Использовать в качестве entry_type следующим образом:

 use App\Form\TagType;

 // ...
 $builder
      ->add('multiple_fields_collection', CollectionType::class, [
          'entry_type' => TagType::class,
          'allow_add' => true,
          'allow_delete' => true,
      ]);

Дополнительная информация:https://symfony.com/doc/current/form/form_collections.html

...