php - Symfony - 可捕获的致命错误:类 App\Entity\Question 的对象无法转换为字符串
问题描述
我正在学习 Symfony,我遇到了这个问题。
可捕获的致命错误:类 App\Entity\Question 的对象无法转换为字符串
我的目标是通过表单添加到数据库中。
我想我的 EntityType 使用错了,这是我的表格:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('question', EntityType::class,
[
'class' => Question::class
]
)
->add(
'answer',
TextType::class
)
->add(
'valid',
ChoiceType::class,
[
'choices' => [
'true' => 1,
'false' => 0
]
]
)
->add(
'save',
SubmitType::class
)
;
}
这是我构建表单的控制器:
$entityManager = $this->getDoctrine()->getManager();
$answer = new Answer();
$form = $this->createForm(ExamDatabaseInteractionType::class, $answer);
$form->handleRequest($request);
if ($form->isSubmitted()) {
$entityManager->persist($answer);
$entityManager->flush();
}
return [
'form' => $form->createView()
];
我猜数据库结构在这里也很重要:
describe question;
+----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| question | varchar(255) | NO | | NULL | |
+----------+--------------+------+-----+---------+----------------+
2 rows in set (0.01 sec)
describe answer;
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| question_id | int(11) | YES | MUL | NULL | |
| answer | varchar(255) | NO | | NULL | |
| valid | tinyint(1) | NO | | NULL | |
+-------------+--------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
我希望我的问题结构很好,这是我关于堆栈溢出的第一个问题。
感谢您的帮助。
解决方案
我很佩服 Symfony 如何将所有内容都记录在案,您的案例也不例外。请参阅Entity Type的文档。
它有一个字段选项choice_label
:
这是应该用于在 HTML 元素中将实体显示为文本的属性。
如果留空,实体对象将被转换为字符串,因此必须有一个
__toString()
方法。您还可以传递回调函数以进行更多控制。
因此,您没有指定choice_label
,也没有__toString
实施,因此出现错误。
你应该做什么:
$builder
->add('question', EntityType::class,
[
'class' => Question::class,
'choice_label' => 'questionName',
])
或__toString()
在Entity\Question
.
推荐阅读
- c - 使用 fscanf 读取文件将 0@ 放在第一行
- ruby - VScode 上的 rubocop 不起作用。错误“rubocop 不可执行”
- python - 在 Python 中创建一个条件来弹出所有没有特定开始的东西
- python - Python无法分配给运算符
- c++ - 如何将向量转换为犰狳矩阵?
- java - 使用 BufferedReader 在 2 个单独的类中调用同一个文件会产生 FileNotFoundException(访问被拒绝)
- c++ - 为没有默认构造函数的类型初始化静态大小的数组
- puppeteer-sharp - 当控制台应用程序关闭时,Puppeteer-Sharp 仍然在进程任务管理器中出现许多铬实例
- php - 尝试使用 MAMP 打开 PHP 站点时出现“拒绝访问”错误
- dart - 颤动如何动态推动 Divider 直到 ListTile 的标题属性