我创建了一个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"
}
我预计这个国家不是美国的关键和价值新元素。你能帮助我吗?非常感谢
答案 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;