我写了一个小的symfony2应用程序,它允许你提出问题,每个问题至少有一个任务,并由用户询问。
但目前我遇到以下错误
“属性”问题“和”getQuestion()“,”isQuestion()“,”hasQuestion()“,”__ get()“都不存在,并且在类”NAMESPACE“中有公共访问权限(问题) “:”
而且我真的不知道为什么会出现这个错误,如果有人能解释这个错误导致什么,那将是非常有用的。 为什么symfony认为问题实体应该采用其中一种方法。
以下是课程:
问题类别(实体),
class Question extends Post
{
/*
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(type="integer")
*/
protected $id;
/**
* @ORM\ManyToMany(targetEntity="PLACEHOLDER")
* @Assert\NotBlank(message="You should select at least one tag.")
*/
protected $tags;
/**
* @var string
* @ORM\Column(type="text")
* @Assert\NotBlank(message="You have to input a heading.")
*/
protected $heading;
/**
* @var string
*
* @ORM\Column(type="text")
* @Assert\NotBlank(message="You have to enter a question text.")
*/
protected $text;
/**
* @var \DateTime
*
* @ORM\Column(type="datetime")
*/
protected $date;
/**
*
* @ORM\ManyToOne(targetEntity="PLACEHOLDER")
*/
protected $user;
/**
* Constructor
*/
public function __construct()
{
$this->tags = new \Doctrine\Common\Collections\ArrayCollection();
}
// GETTERS / SETTERS ....
}
问题类型类(表格),
class QuestionType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('tags', 'entity', array( 'class'=>'fully qualified class name(tag)',
'property'=>'name'))
->add('heading', 'text')
->add('question', 'textarea')
->add('submit', 'submit')
;
}
/**
* @param OptionsResolverInterface $resolver
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'fully qualified class names (Question Entity)'
));
}
/**
* @return string
*/
public function getName()
{
return 'PLACEHOLDER';
}
}
和问题控制器行动:
public function askQuestionAction(Request $request)
{
$form = $this->createForm(new QuestionType, new Question);
$form->handleRequest($request);
if ($form->isValid()) {
// persist
}
return array('form' => $form->createView());
}
答案 0 :(得分:1)
您正尝试使用
将表单绑定到Question
实体
$form = $this->createForm(new QuestionType, new Question);
$form->handleRequest($request);
表单上有question
,handleRequest
会尝试绑定到Question
实体。
查看代码时,->add('question', 'textarea')
实际上不应该是->add('text', 'textarea')
?
答案 1 :(得分:0)
此PLACEHOLDER(Namespace to Question Entity)
和此PLACEHOLDER(Namespace to Tag class)
。那些应该是完全限定的类名。
EG。 MyVendor\MyBundle\Entity\MyEntity