国家字段类型在Symfony2中获取Null

时间:2013-06-19 09:44:58

标签: symfony

我创建了一个FormType,它添加了一个像这样的国家/地区字段

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('address', 'text', array(
            'required' => false,
        ))
        ->add('country', 'country', array(
            'required' => false,
        ));
}

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => $this->dataClass,
    ));
}

public function getName()
{
    return 'form_contact';
}

我将此表单的 data_class 选项设置为具有地址国家这两个字段的实体 string < / strong>类型

将表单提交并提交即可,POST参数包括

form_contact['address'] = 'Some value'
form_contact['country'] = 'US'

但是当我从提交的表单中保留实体时,country字段为NULL。转储 $ form-&gt; getData()我得到了这个:

object(Namspace\Entity\MyEntity)#3501 (3) {
  ["id":protected]=>
  NULL
  ["address1":protected]=>
  string(12) "Some value"
  ["country":protected]=>
  NULL
  ["US"]=>
  string(2) "US"
}

我预计这个国家不是美国的关键和价值新元素。你能帮助我吗?非常感谢

1 个答案:

答案 0 :(得分:0)

您可能忘记将实体绑定到控制器中的表单。

因此,在调用$form->bind($request)时,您的实体上没有填充提交的formdata(虽然存在)。

public function submitAction(Request $request)
{

    $entity = new YourEntity();
    $form = $this->createForm(new YourFormType, $entity); // <- see here
    $form->bind($request);

    if ($form->isValid) {
       $em = $this->get('doctrine')->getManager();
       $em->persist($entity);
       $em->flush;