2016-08-03 31 views
1

gesetzt wurde Kann jemand mir erklären, wie diese Fehler zu beheben „Kein-Objekt-Manager eingestellt wurde“Kein Objektmanager ZF2 Fieldset

Hier die Fieldset ist:

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'), 
       ), 
      ) 
     )); 
    } 
} 

Hier ist die Fehlermeldung:

F: \ xampp \ htdocs \ travelltheworld \ Kreditoren \ Lehre \ Lehre-Modul \ src \ DoctrineModule \ Formular \ Element \ proxy.php: 535

No Objektmanager wurde

Ich habe den Entity Manager in der Fabrik in meine Form, die ProductForm genannt wird, eingefügt. Innerhalb dieses Formulars habe ich ein Basis-Fieldset namens ProductFieldset und in ProductFieldset habe ich CategoryFieldset eingefügt, wo ich die Kategorien aus der Datenbank auswählen und sie im Auswahlfeld anzeigen muss.

Wenn Sie mehr Code oder Erklärung benötigen, fragen Sie mich bitte.

Antwort

0

Fieldset-Objekt kann Ihre Körper mit einem Hydrator hydratisieren. Hier

ist ein komplettes Beispiel eines fieldset https://github.com/Grafikart/BlogMVC/blob/master/ZendFramework2/module/Blog/src/Blog/Form/Fieldset/CommentFieldset.php

Wie Sie die Fieldset sehen können Objekt-Manager haben von einer "awareInterface" genannt ObjectManagerAwareInterface,

use DoctrineModule\Persistence\ObjectManagerAwareInterface; 

und das Merkmal: use ProvidesObjectManager;

Sie haben diejenigen in Ihrem fieldset vermissen, sollte dies cor rect dein Problem.

Ihr Formular und seine Fabrik sind völlig anders als das Feldset, so dass es für Sie nicht möglich ist, die Injektion zu konstruieren.

+0

Zunächst möchte ich die verspätete Antwort entschuldigen und danke @Hooli. Deine Antwort ist richtig! Anstelle von Konstruktoren verwende ich Initialisierer in der Form und den Feldgruppen. Anstelle der Eigenschaft verwende ich intereface ObjectManagerAwareInterface. Ich folgte der Erklärung hier https://github.com/doctrine/DoctrineModule/issues/175 – Sezgin