php - 交响乐团 3 : How can I implement an EntityType in Form with a lot of objects?

标签 php symfony formbuilder

我有一个实体 City存储元素超过30000件。用户可以添加Address具有关系的对象 ManyToOneCity 。 但是在Form构建过程中,渲染了<input>输入 radio 或 select不适合对象的数量...

我使用以下实现代码(它是一个片段):

public function buildForm(FormBuilderInterface $builder, array $options)
{
  /* Pattern to get cities */
  $pattern = 'Bor%';  //I use this filter to reduce the number of objects but not sufficient

  $builder
    ->add('city', EntityType::class, array(
      'class'        => 'AppPlatformBundle:City',
      'choice_label' => 'name',
      'multiple'     => false,
      'expanded'     => true,
      'query_builder'=> function(CityRepository $repository) use($pattern) {
        return $repository->getCitiesWithPattern($pattern);
      }));
}

我认为解决方案是使用 TextType,其中用户可以在开始输入任何内容时选择建议。但我不知道如何实现这一点。

请问您对我的问题有解决办法吗?

谢谢

最佳答案

按照以下步骤:

  1. 创建继承自简单 TextType 的自定义表单类型
  2. 将此自定义表单类型与 JavaScript 自动完成插件和 ajax 调用结合使用
  3. 创建自定义操作,以便检索您对选择框(由插件创建)的选择
  4. 在自定义表单类型中使用数据转换器来检索对象而不是值

关于php - 交响乐团 3 : How can I implement an EntityType in Form with a lot of objects?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46934978/

相关文章:

php - 如何让 MySQL 每隔一段时间运行一次查询?

mysql - 查询构建器选择实体关系 ID

javascript - 多选。交响乐形式

javascript - js文件中的 Twig 代码

Symfony 2 FOSFacebookBundle 登录前自定义重定向

php - 如何显示用户从表单生成器中选择的最后一个字段以及字段名称和字段类型?

php - 在magento 2中更改产品的Url键时,如何不替换/by

php - 基于 MySQL 列数据类型的动态 PHP 代码创建

php - preg_match_all 用于括号内和括号外的单词