在Symfony 3 / PHP 7中,我需要一个接受混合类型数组(字符串,整数和数组)的表单。 CollectionType的“ entry_type”参数仅接受唯一的Type。我怎样才能有混合类型?
$builder
->add('value', CollectionType::class, array(
'entry_type' => ?,
'allow_add' => true,
'allow_delete' => true,
));
答案 0 :(得分:0)
您可以使用嵌入表格。在您的自定义表单类型中,您可以定义多个输入字段,然后在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