2016-08-03 2 views
1

Может кто-нибудь объяснить мне, как исправить эту ошибку «Нет менеджер объектов не был установлен»Нет менеджер объектов не был установлен ZF2 Fieldset

Вот FIELDSET:

namespace Trunk\Form; 

use Trunk\Entity\Category; 
use Doctrine\Common\Persistence\ObjectManager; 
use DoctrineModule\Stdlib\Hydrator\DoctrineObject as DoctrineHydrator; 
use Zend\Form\Fieldset; 
use Zend\InputFilter\InputFilterProviderInterface; 

class CategoryFieldset extends Fieldset implements InputFilterProviderInterface 
{ 
    public function __construct($objectManager) 
    { 
     parent::__construct('category'); 

     $this->setHydrator(new DoctrineHydrator($objectManager, 'Trunk\Entity\Category')); 

     $this->add(array(
      'type' => 'DoctrineORMModule\Form\Element\DoctrineEntity', 
      'name' => 'title', 
      'object_manager' => $objectManager, 
      'target_class' => 'Trunk\Entity\Category', 
      'property'  => 'title', 
      'is_method'  => false, 
      'find_method' => array(
       'name' => 'findBy', 
       'params' => array(
        'criteria' => array('parentid' => 0), 
        'orderBy' => array('title' => 'ASC'), 
       ), 
      ) 
     )); 
    } 
} 

Вот сообщение об ошибке:

F: \ XAMPP \ HTDOCS \ travelltheworld \ поставщик \ доктрина \ доктрина-модуль \ SRC \ DoctrineModule \ Form \ Элемент \ Proxy.php: 535

Нет диспетчер объектов был установлен

Я ввел менеджера объектов на заводе в свою форму, которая называется ProductForm. Внутри этой формы у меня есть базовый набор полей под названием ProductFieldset, а внутри ProductFieldset я вставил CategoryFieldset, где мне нужно выбрать категории из базы данных и отобразить их в поле выбора.

Если вам нужно больше кода или объяснений, пожалуйста, спросите меня.

ответ

0

Объект Fieldset может гидратировать ваши объекты с помощью Hydrator.

Вот полный пример FIELDSET https://github.com/Grafikart/BlogMVC/blob/master/ZendFramework2/module/Blog/src/Blog/Form/Fieldset/CommentFieldset.php

Как вы можете видеть FIELDSET может иметь менеджер объектов с помощью "awareInterface" имени ObjectManagerAwareInterface,

use DoctrineModule\Persistence\ObjectManagerAwareInterface; 

и черта: use ProvidesObjectManager;

use DoctrineModule\Persistence\ProvidesObjectManager as ProvidesObjectManager ; 

у вас не хватает тех, что указаны в полевом поле, это должно быть исправьте свою проблему.

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

+0

Прежде всего, я хотел бы сказать извините за поздний ответ и спасибо @ Хоули. Ваш ответ правильный! Вместо конструкторов я использую инициализаторы в форме и в полях. Вместо черты я использую intereface ObjectManagerAwareInterface. Я следил за объяснением https://github.com/doctrine/DoctrineModule/issues/175 – Sezgin

Смежные вопросы