【问题标题】:How to work with entity form field type, and JUI autocomplete in Symfony2?如何在 Symfony2 中使用实体表单字段类型和 JUI 自动完成?
【发布时间】:2023-03-21 19:37:01
【问题描述】:

我有 entity 字段类型的表单,允许用户选择相关的 Client 实体。它在开发环境中运行良好,但在生产环境中将有数千个客户端可供选择,而 HTML 表单字段类型将无法处理此问题。

我编写了使用 Zend Lucene 并以 JSON 格式返回客户端以进行 JUI 自动完成的动作,我如何使用 entity 表单字段类型启用此自动完成?

【问题讨论】:

    标签: php forms autocomplete doctrine-orm symfony


    【解决方案1】:

    这不是完全你想要的答案,因为我是用一个选择字段来做的,这是一种解决方法。这是一个表单,您可以在其中选择发送消息的接收者(=campaign):

    在表单类型中:

    公共功能 __construct(EntityManager $em, Campaign $campaign) { $this->campaign = $campaign; $this->em = $em; } 公共函数 buildForm(FormBuilder $builder, array $options) { $contactChoices = array('0'=>''); if($this->campaign && $this->campaign->getRecipientContacts()){ foreach($this->campaign->getRecipientContacts() as $contact){ $contactChoices[$contact->getHash()] = $contact->getName(); } } $builder->add('主题') ->添加('消息','文本区域') ->添加('recipientContacts','选择',数组( '必需' => 假, 'multiple' => true, // 管理多项选择 '选择' => $contactChoices, 'property_path' => 假, )) ...

    然后在控制器中:检索已发布的联系人并将其分配给活动:

    if($this->getRequest()->getMethod() == 'POST'){ $campaign->removeRecipientContacts(); $data = $this->getRequest()->get('campaignForm'); if(isset($data['recipientContacts'])){ foreach($data['recipientContacts'] as $hash){ $contact = $this->getRepo()->getContactByHash($hash); $campaign->addRecipientContact($contact); } } }

    这允许您在前端使用任何 JS 小部件(自动完成,...)。只需将选项添加到您的选择字段。种类:

    function addContact(hash,name){
         $('#campaignContactChoiceSelectField').append('<option value="'+hash+'">'+name+'</option>');
    }
    

    【讨论】:

      猜你喜欢
      • 2015-11-03
      • 2015-11-26
      • 1970-01-01
      • 1970-01-01
      • 2012-05-07
      • 2015-02-10
      • 2017-11-16
      • 2013-08-15
      • 2014-03-18
      相关资源
      最近更新 更多