问问题
19786 次
3 回答
67
在您的表单中添加一个带有 false property_path 的文本字段:
$builder->add('extra', 'text', array('property_path' => false));
然后,您可以访问控制器中的数据:
$extra = $form->get('extra')->getData();
更新
自 Symfony 2.1 以来的新方法是使用该mapped
选项并将其设置为false
.
->add('extra', null, array('mapped' => false))
Henrik Bjørnskov 的更新信息致谢(下方评论)
于 2012-10-07T05:20:57.047 回答
30
从 Symfony 2.1 开始,使用以下mapped
选项:
$builder->add('extra', 'text', [
'mapped' => false,
]);
于 2012-10-07T20:20:09.787 回答
4
根据文档:
允许额外字段
通常,如果您提交未在表单中配置的额外字段,您将收到“此表单不应包含额外字段”。验证错误。
您可以通过启用
allow_extra_fields
表单上的选项来消除此验证错误。
映射
如果您希望在读取或写入对象时忽略该字段,您可以将该
mapped
选项设置为 false。
class YourOwnFormType extends AbstractType
{
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(
array(
'allow_extra_fields' => true
)
);
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$form = $builder
->add('extra', TextType::class, array(
'label' => 'Extra field'
'mapped' => false
))
;
return $form;
}
}
于 2016-12-19T18:55:04.937 回答