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   回答