Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony2-如何验证自动完成实体表单类型?_Php_Jquery_Validation_Symfony_Symfony Validator - Fatal编程技术网

Php Symfony2-如何验证自动完成实体表单类型?

Php Symfony2-如何验证自动完成实体表单类型?,php,jquery,validation,symfony,symfony-validator,Php,Jquery,Validation,Symfony,Symfony Validator,我有一个包含以下字段的表单: $builder ->add('title', 'text') ->add('body', 'textarea') ->add('tags', 'entity', [ 'class' => 'AppBundle\Entity\Tag', 'choice_label' => 'name', 'expanded' => false, 'multip

我有一个包含以下字段的表单:

$builder
    ->add('title', 'text')
    ->add('body', 'textarea')
    ->add('tags', 'entity', [
        'class' => 'AppBundle\Entity\Tag',
        'choice_label' => 'name',
        'expanded' => false,
        'multiple' => true,
    ]);

用户可以选择多个标签。一切都很完美。但现在,当标签数量变得非常大(超过20000个标签)时,页面呈现变得非常慢,因为entity type将所有标签加载到selectbox中。因此,我实现了一个jQuery自动完成选择框,以防止加载所有实体,但当我提交表单时,验证器仍然加载所有标记以进行验证!如何解决此验证问题?谢谢大家!

不要使用
实体
字段类型,而是使用简单的
文本
类型,该类型将接受关联实体的ID。您还需要使用数据转换器将提交的ID转换为将在表单的数据实体上设置的实体对象(反之亦然)


由于有了数据转换器,验证将像是
实体
字段类型一样工作。

您唯一的机会就是使用自己的验证实现自己的字段类型。如果可能,还可以使用
query\u builder
选项限制标记的数量。