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

标签 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 自动完成选择框来防止加载所有实体但是当我提交表单时,验证器仍然加载所有标签来验证!我该如何解决这个验证问题?谢谢!

最佳答案

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

Data transformer example

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

关于php - Symfony2 - 如何验证自动完成实体表单类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31938070/

相关文章:

c# - 如何获取像复选框一样使用的 Rad Button 的值

javascript - 你如何根据浏览器宽度用 javascript 更改 img src?

java - com.networknt json-schema-validator 不检查 json 中的未知关键字

php - 如何在不创建模型的情况下使用标准 Yii2 验证器验证 PHP 中的变量?

php - 在 Magento 安装脚本中创建属性集

php - 使用php mysql错误从数据库中选择的值进入下拉选择框选项

php - 将数据流式传输到服务器?

php - jQuery 到 PHP - 序列化字符串

javascript - FullCalendar JS - 当我点击事件中的网格时获取日期

java - flaying Sacer org.xml.sax.SAXParseException 实体 HTML.Version 的声明必须以 > 结尾