【问题标题】:Symfony2 - How to validate autocomplete entity form type?Symfony2 - 如何验证自动完成实体表单类型?
【发布时间】:2015-11-03 11:02:45
【问题描述】:

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

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

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

【问题讨论】:

  • 您唯一的机会就是通过您自己的验证来实现您自己的字段类型。如果可能的话,您还可以使用query_builder 选项来限制标签​​的数量。

标签: php jquery validation symfony symfony-validator


【解决方案1】:

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

Data transformer example

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

【讨论】:

    猜你喜欢
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多