Symfony3 allow_extra_fields

时间:2016-03-25 13:49:57

标签: 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();

但是我收到了这个错误:

  

属性“Nom”和方法“getNom()”,“nom()”,“isNom()”,“hasNom()”,“__ get()”都不存在,并且在课堂上具有公共访问权限“CommonBundle \实体\联系”。

如何防止此错误?

1 个答案:

答案 0 :(得分:4)

allow_extra_fields适用于提交表单时,它允许您的表单中未指定的字段也可以在您的表单中传递,如果在提交表单时,它包含一个字段,用于表单。 foob​​ar的'它不会抛出错误说"表单不应包含额外的字段"。

因为' 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();