php – Symfony表单Select2允许用户输入新值

我有一个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中输入新内容时,我的省值为null.

解决方法:

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

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...