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

4

我有一个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,
            ))

twig

$('#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();
   }
}

但是当我在省份选择框中输入新值时,province 的值为 null


为其创建特殊的表单类型。 - Max P.
什么是特殊类型? - Muhammad Taqi
@MTaqi 阅读关于此的内容:http://symfony.com/doc/current/cookbook/form/create_custom_field_type.html - sanis
1个回答

0

正常工作 :) 您没有实体,因此为空。要使其工作,您需要创建一个 DataTransformer(http://symfony.com/doc/current/cookbook/form/data_transformers.html),在那里获取状态,如果不存在,则创建一个新的实体对象。确保级联正确,以便将新状态与用户配置文件一起持久化。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接