Zend Framework 2 – Формы аннотаций и Doctrine2 – Обрезаемая фатальная ошибка – ObjectManager

Я использую 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 я получаю следующую ошибку:

Допустимая фатальная ошибка: аргумент 1 передан DoctrineModule \ Stdlib \ Hydrator \ DoctrineObject :: __ construct () должен быть экземпляром Doctrine \ Common \ Persistence \ ObjectManager, не указанным в C: \ vendor \ zendframework \ zendframework \ library \ Zend \ Form \ Factory.php в строке 566 и определен в C: \ vendor \ doctrine \ doctrine-module \ src \ DoctrineModule \ Stdlib \ Hydrator \ DoctrineObject.php в строке 63

Я не могу использовать Zend\Stdlib\Hydrator\ObjectProperty потому что тогда я получаю

Неустранимая ошибка: невозможно получить доступ к защищенному объекту

Я совсем потерян. Кто-нибудь знает, что я могу сделать, чтобы исправить эту проблему?

Я предполагаю, что мне нужна функция __construct() . Но что я там ставлю?

Related of "Zend Framework 2 – Формы аннотаций и Doctrine2 – Обрезаемая фатальная ошибка – ObjectManager"

Кто-то может придумать функцию только для аннотаций, если это существует, тем временем вы можете пойти следующим образом:

 $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 

Были также проблемы с аннотациями. Мое решение было разумом. Мне давно нужно было узнать. Моя проблема была в первой строке кода аннотации.

 /** 

Эта строка обычно используется для комментирования вашего кода аннотации, но все остальные оставляют ее пустой. Обычно проблем нет, но это как-то вызывает проблемы в аннотациях формы. Вы должны либо добавить комментарий, добавить пробел, либо перенести свою первую строку кода вверх. Так:

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

или начните вот так:

 /** @ORM\Entity 

Не спрашивайте меня, почему это происходит (некоторая ошибка синтаксического анализа?). Я нашел это в сообщении на GitHub, где кто-то сообщал о подобной проблеме ( https://github.com/doctrine/common/issues/331 ). Насколько я понял, ошибка – это не доктрина, а проблема ZF2, о которой сообщалось.

Не уверен, что это ваша проблема, но публикация этого была наименее возможной …

Пожалуйста, взгляните на это решение , это preatty хорошо