Symfony2 - 如何验证自动完成实体表单类型?
Symfony2 - How to validate autocomplete entity form type?
我有一个包含以下字段的表单:
$builder
->add('title', 'text')
->add('body', 'textarea')
->add('tags', 'entity', [
'class' => 'AppBundle\Entity\Tag',
'choice_label' => 'name',
'expanded' => false,
'multiple' => true,
]);
用户可以select多个标签。一切都很完美。但是现在当标签的数量变得非常大(超过 20000 个标签)时,页面渲染变得非常慢,因为实体类型将所有标签加载到 selectbox 中。因此我实现了一个 jQuery 自动完成 select 框来防止加载所有实体但是当我提交表单时,验证器仍然加载所有标签来验证!我该如何解决这个验证问题?谢谢!
不使用 entity
字段类型,而是使用接受关联实体 ID 的简单 text
类型。您还需要制作数据转换器以将提交的 ID 转换为将在表单的数据实体上设置的实体对象(反之亦然)。
验证将像 entity
字段类型一样工作,多亏了数据转换器。
我有一个包含以下字段的表单:
$builder
->add('title', 'text')
->add('body', 'textarea')
->add('tags', 'entity', [
'class' => 'AppBundle\Entity\Tag',
'choice_label' => 'name',
'expanded' => false,
'multiple' => true,
]);
用户可以select多个标签。一切都很完美。但是现在当标签的数量变得非常大(超过 20000 个标签)时,页面渲染变得非常慢,因为实体类型将所有标签加载到 selectbox 中。因此我实现了一个 jQuery 自动完成 select 框来防止加载所有实体但是当我提交表单时,验证器仍然加载所有标签来验证!我该如何解决这个验证问题?谢谢!
不使用 entity
字段类型,而是使用接受关联实体 ID 的简单 text
类型。您还需要制作数据转换器以将提交的 ID 转换为将在表单的数据实体上设置的实体对象(反之亦然)。
验证将像 entity
字段类型一样工作,多亏了数据转换器。