aln*_*447 1 forms oop doctrine request symfony
我有一个从问题实体设置的表单生成器:
class Question
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string", length=255, name="question")
* @var string $question
*/
protected $question;
/**
* @ORM\Column(type="string", length=255, name="answer1")
* @var string $answer1
*/
protected $answer1;
/**
* @ORM\Column(type="string", length=255, name="answer2")
* @var string $answer2
*/
protected $answer2;
/**
* @ORM\Column(type="string", length=255, name="answer3")
* @var string $answer3
*/
protected $answer3;
/**
* @ORM\Column(type="integer", name="correct_answer")
* @var int $correctAnswer
*/
protected $correctAnswer;
/**
* @ORM\Column(type="datetime", name="post_date")
*/
protected $postDate;
/....
Run Code Online (Sandbox Code Playgroud)
现在构建器看起来像这样:
$question = new Question();
$form = $this->createFormBuilder($question)
->add('id', HiddenType::class, array(
'data' => 0,
'attr' => array(
'class' => 'question-form__id'
)
)
)
->add('question', TextType::class, array('label' => 'Pytanie', 'required' => true))
->add('answer1', TextType::class, array('label' => 'Odpowied? 1', 'required' => true))
->add('answer2', TextType::class, array('label' => 'Odpowied? 2', 'required' => true))
->add('answer3', TextType::class, array('label' => 'Odpowied? 3', 'required' => true))
->add('correctAnswer', ChoiceType::class, array(
'label' => 'Poprawna odpowie?',
'choices' => array(
'Pierwsza' => 1,
'Druga' => 2,
'Trzecia' => 3
)
))
->add('save', SubmitType::class, array(
'label' => 'Dodaj Pytanie',
'attr' => array(
'class' => 'btn btn-primary btn--add-question'
)
))
->getForm();
Run Code Online (Sandbox Code Playgroud)
数据设置为0的原因是因为它的值将形成一个新的问题(if id==0)或编辑当前的一个(else).
问题是,在提交表格后我得到了
无法确定属性"id"的访问类型
四处玩,exit;表明错误发生在$form->handleRequest($request);
这里有趣的是,如果我将实体设置id为公共,handleRequest工作正常.
我们都知道将公共信息作为公共信息并不是一个好主意.
所以我的问题是如何避免错误而不必做有史以来最糟糕的做法?
编辑:将id值设置为私有导致相同的错误
| 归档时间: |
|
| 查看次数: |
3858 次 |
| 最近记录: |