2

我正在使用 Zend、Doctrine2.1 和 AnnotationForms。

我的实体如下所示:

/**
 * @ORM\Entity
 * @ORM\Table(name="myentity")
 * @Form\Name("myentity")
 * @Form\Attributes({ "class": "form-horizontal" })
 * @Form\Hydrator("\DoctrineModule\Stdlib\Hydrator\DoctrineObject")
*/
class MyEntity {
   ...
}

使用它时,DoctrineObject我收到以下错误:

可捕获的致命错误:传递给 DoctrineModule\Stdlib\Hydrator\DoctrineObject::__construct() 的参数 1 必须是 Doctrine\Common\Persistence\ObjectManager 的一个实例,没有给出,在 C:\vendor\zendframework\zendframework\library\Zend 中调用\Form\Factory.php 在第 566 行,并在第 63 行的 C:\vendor\doctrine\doctrine-module\src\DoctrineModule\Stdlib\Hydrator\DoctrineObject.php 中定义

我不能使用Zend\Stdlib\Hydrator\ObjectProperty,因为那时我得到

致命错误:无法访问受保护的财产

我很迷茫。有人知道我能做些什么来解决这个问题吗?

我猜我需要一个__construct()函数。但是我在里面放什么?

4

3 回答 3

3

有人可能会想出一个仅限 Annotation 的函数,如果存在的话,同时你可以采用这种方法:

$form = //create the annotation form WITHOUT a hydrator
$objectManager = $serviceLocator->get('Doctrine\ORM\EntityManager');
$hydrator = new \DoctrineModule\Stdlib\Hydrator\DoctrineObject($objectManager);
$form->setHydrator($hydrator);

//continue in your controller
于 2012-12-27T13:54:32.007 回答
0

注释表格也有问题。我的解决方案是令人费解的。我花了很长时间才知道。我的问题出在注释代码的第一行。

/**

此行通常用于注释您的注释代码,但几乎所有人都将其留空。通常没有问题,但这会以某种方式导致表单注释出现问题。您应该添加一些注释、添加空格或将第一行代码向上移动。所以:

/** Some comment to make this annotation work
/** (<-- a space)

或者这样开始:

/** @ORM\Entity

不要问我为什么会这样(一些解析错误?)。我在 GitHub 上的一篇文章中发现了这个,有人报告说有类似的问题 ( https://github.com/doctrine/common/issues/331 )。据我了解,该错误不是教义,而是 ZF2 问题,并且已被报告。

不确定这也是你的问题,但发布这是我能做的至少......

于 2013-04-04T17:30:02.637 回答
-1

请看一下这个解决方案,它非常好

于 2013-06-26T21:16:31.137 回答