Symfony3 allow_extra_fields

Val*_*ULE 2 forms symfony

我正在尝试向表单添加两个额外的字段:

$this->contactForm = $this->createFormBuilder($contact, array('allow_extra_fields' =>true))
->add('Nom',        TextType::class)
->add('Prenom',     TextType::class)
->add('Telephone',  TextType::class, array(
    'label' => 'Téléphone'))
->add('Email',      TextType::class)
->add('Ajouter',    SubmitType::class)
->getForm();
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:

属性“Nom”和方法“getNom()”、“nom()”、“isNom()”、“hasNom()”、“__get()”都不存在并且在类“CommonBundle\”中具有公共访问权限实体\联系人”。

我怎样才能防止这个错误?

Der*_*k F 8

allow_extra_fields 用于在提交表单时,它将允许在您的表单中未指定的字段也被传递,例如在您的表单中,如果提交时它包含一个 'foobar' 的字段,它不会抛出一个错误说“表单不应包含额外的字段”。

由于您的实体中未映射 'Nom',您需要指定该字段未映射。有关信息,请参阅http://symfony.com/doc/current/reference/forms/types/form.html#mapped

$this->contactForm = $this->createFormBuilder($contact, array('allow_extra_fields' =>true))
->add('Nom',        TextType::class, array('mapped'=>false))
->add('Prenom',     TextType::class)
->add('Telephone',  TextType::class, array(
    'label' => 'Téléphone'))
->add('Email',      TextType::class)
->add('Ajouter',    SubmitType::class)
->getForm();
Run Code Online (Sandbox Code Playgroud)