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

时间:2015-08-11 09:28:39

标签: 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,
        'multiple' => true,
    ]);

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

1 个答案:

答案 0 :(得分:5)

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

Data transformer example

由于数据转换器,验证将像entity字段类型一样工作。