gpt4 book ai didi

forms - 无法确定属性 "id"的访问类型 - HandleRequest 失败,除非我公开实体 ID

转载 作者:行者123 更新时间:2023-12-02 00:47:23 25 4
gpt4 key购买 nike

我有一个从问题实体设置的表单生成器:

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;
/....

现在构建器看起来像这样:

 $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();

id 将数据设置为 0 的原因是因为它的值将形成一个新问题(if id==0)或编辑当前问题(else)。

问题是,在提交我得到的表格后

Could not determine access type for property "id"

尝试 exit; 显示错误发生在 $form->handleRequest($request);

有趣的是,如果我将实体 id 设置为 public,handleRequest 就可以正常工作。

我们都知道将 ID 公开并不是一个好主意。

所以我的问题是如何在不必执行可能是有史以来最糟糕的做法的情况下避免错误?

编辑:id 值设置为 private 会导致相同的错误

最佳答案

您可以为 $id 添加一个 setter,就像为其他属性添加任何 setter 一样

关于forms - 无法确定属性 "id"的访问类型 - HandleRequest 失败,除非我公开实体 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42729607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com