SF2 形式:错误既不是属性...也不是方法之一“get" [英] SF2 form : error Neither the property ... nor one of the methods "get
问题描述
我尝试使用 Symfony 2.4.1 制作联系表格,但出现以下错误:
I try to do a contact form with Symfony 2.4.1 and I have the following error :
Neither the property "contact" nor one of the methods "getContact()", "isContact()", "hasContact()", "__get()" exist and have public access in class "OpenOpcBundleEntityContact".
我理解错误本身,但我在 SF2 表单文档或网络上找不到任何资源来解决它:
I understand the error itself, but I can't find any resources to solve it in SF2 forms documentation or on the web:
控制器代码如下所示:
[..]
class OpcController extends Controller {
public function contactAction(Request $request) {
$contact = new Contact();
$form = $this->createForm(new ContactType(), $contact);
$form->handleRequest($request);
return $this->render("OpenOpcBundle:Opc:contact.html.twig",
array("formu" => $form->createView(),
)
);
}
}
联系实体如下所示:
[...]
class Contact {
protected $nom;
protected $courriel;
protected $sujet;
protected $msg;
public function getNom() {
return $this->nom;
}
public function setNom($nom) {
$this->nom = $nom;
}
public function getCourriel() {
return $this->courriel;
}
public function setCourriel($courriel) {
$this->courriel = $courriel;
}
public function getSujet() {
return $this->sujet;
}
public function setSujet($sujet) {
$this->sujet = $sujet;
}
public function getMsg() {
return $this->msg;
}
public function setMsg($msg) {
$this->msg = $msg;
}
}
和表单类代码:
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->add('contact');
->add('nom', 'text'))
->add('courriel', 'email')
->add('sujet', 'text')
->add('msg', 'textarea')
->add('submit', 'submit');
}
public function getName() {
return "Contact";
}
public function setDefaultOptions(OptionsResolverInterface $resolver) {
$resolver->setDefaults(array('data_class' => 'OpenOpcBundleEntityContact', ));
}
}
我的错误在哪里?谢谢
推荐答案
您的错误是正确的,并告诉您实体 Contact
没有 contact
属性并且没有相关的 getter setter 方法,而在您的 buildForm()
中,您使用了诸如 $builder->add('contact');
之类的联系属性,但在实体,先在实体中定义属性
Your error is correct and telling you that you entity Contact
does not have the contact
property and no related getter setter method while in your buildForm()
you have used contact property like $builder->add('contact');
but there is no related property exists in the entity,Define the property first in your entity
class Contact {
protected $nom;
protected $courriel;
protected $sujet;
protected $msg;
protected $contact;
public function getContact() {
return $this->contact;
}
public function setContact($contact) {
$this->contact= $contact;
}
/* ...
remaining methods in entity
*/
}
或者如果它是非映射字段,那么您必须在构建器中将此字段定义为非映射
or if its a non mapped field then you have to define this field in builder as non mapped
$builder->add('contact','text',array('mapped'=>false));
通过上面的定义,您将不需要更新您的实体
By defining above you will not need to update your entity
这篇关于SF2 形式:错误既不是属性...也不是方法之一“get"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!