0

我创建了一个 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选项设置为一个实体,该实体具有这两个字段的地址国家/地区都是字符串类型

重新提交表单并提交就可以了,POST参数包括

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

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

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

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

4

1 回答 1

0

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

因此,提交的表单数据(尽管存在)在$form->bind($request)被调用时不会填充到您的实体上。

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;
于 2013-06-19T09:52:21.710 回答