Symfony Form Select2 允许用户输入新值

Posted

技术标签:

【中文标题】Symfony Form Select2 允许用户输入新值【英文标题】:Symfony Form Select2 Allow User to Enter New Values 【发布时间】:2016-04-01 03:02:12 【问题描述】:

我有一个 Symfony 表单,其中有一个省字段,将其转换为 Select2。我想允许用户也允许新值。

 ->add('province', 'entity', array(
                'class' => 'PNC\GeneralBundle\Entity\State',
                'property' => 'name',
                'empty_value'=>'-- Select Province --',
                'label' => ucfirst('State / Province / Region'),
                'required'  => false,
                'attr' => array('class' => 'form-control'),
                'label_attr' => array('class' => 'control-label'),
                'mapped' => false,
            ))

树枝

$('#user_profile_type_province').select2(
    tags: "true",
);

控制器

if ($request->getMethod() == 'POST') 
 $UserProfileForm->handleRequest($request);
 $province = $UserProfileForm["province"]->getData();
 $tag = $em->getRepository('PNCGeneralBundle:State')->findOneByName($province);
 if(!$tag)
   $newState = new State();
   $newState->setName($province);
   $newState->setCountry($UserProfileForm["country"]->getData());
   $em->persist($newState);
   $em->flush();
   

但是当我在省 select2 中进行新输入时,我得到了 provincenull

【问题讨论】:

为它制作特殊的表单类型 特殊类型是什么意思? @MTaqi 读到了symfony.com/doc/current/cookbook/form/… 【参考方案1】:

它按预期工作:) 你没有实体,所以有空值。要使其工作,您必须创建一个 DataTransformer (http://symfony.com/doc/current/cookbook/form/data_transformers.html),如果状态不存在,您将在那里获取状态,您将创建一个新的实体对象。确保级联正确,以便新状态将与用户配置文件一起保存。

【讨论】:

以上是关于Symfony Form Select2 允许用户输入新值的主要内容,如果未能解决你的问题,请参考以下文章

Symfony3 + Select2 AJAX - 禁用选择验证

Select2 多选和允许标签的默认值

当用户键入时,Select2 下拉列表允许用户输入新值

如何允许用户在 Select2 上选择空字符串

在 Symfony 表单中启用 Select2Search

Symfony 表单插入通过 Select2 选择的多个值