我正在使用 Symfony 2.1.3-DEV 并尝试完成将实体转换为字符串(某种 ID),然后在提交表单时从字符串返回到实体。如果我使用说明书中给出的变压器,问题是一样的:http: //symfony.com/doc/master/cookbook/form/data_transformers.html
控制器代码:
$task = $entityManager->find('AcmeTaskBundle:Task', $id);
$form = $this->createForm(new TaskType(), $task); // so $task->issue is Issue object
我收到此错误:
表单的视图数据应该是 Acme\TaskBundle\Entity\Issue 类的一个实例,但它是一个 (n) 字符串。您可以通过将“data_class”选项设置为 null 或添加将 a(n) 字符串转换为 Acme\TaskBundle\Entity\Issue 实例的视图转换器来避免此错误。
问题是,我已经有一个转换器,可以转换为字符串。
来自Form.php
:
if (null !== $dataClass && !$viewData instanceof $dataClass) {
throw new FormException(
//...
);
}
为什么$viewData
要检查为data_class
参数的实例(或给定对象的猜测类型)?视图数据不应该是字符串/数组等吗?我错过了什么吗?