2017-10-26 3 views
0

Ich rufe eine Basismethode von ProductController::__construct().DoctrineBundle ist nicht in Ihrer Anwendung im Basiscontroller registriert

ProductController erweitert BaseController.

BaseController erweitert Controller.

Bellow Linie gibt es auch in BaseController

use Symfony\Bundle\FrameworkBundle\Controller\Controller; 

Während $this->getDoctrine() Ausführung ist mir zeigt

Error: Call to a member function has() on null -- The DoctrineBundle is not registered in your application.

, die unten Bild zu sehen ist.

ich bin mit Symfony 2,7 ​​

The DoctrineBundle is not registered in your application on $this->getDoctrine()

+0

Bitte fügen Sie Ihre 'app/config/config.yml' Datei – Mcsky

+0

https://www.i.imgur.com/iKhVvSy.jpg https://www.i.imgur.com/nQRBqHH.jpg https://www.i.imgur.com/55kQp4b.jpg @Mcsky –

Antwort

1

symfonys Basissteuerung Klasse implementiert ContainerAwareInterface Schnittstelle arbeiten, das ein Verfahren setContainer aufweist. Wenn Sie diesen Controller regelmäßig über Symfony verwenden, wird über diese Schnittstelle der Service-Container unter der Haube zugeordnet.

Wenn Sie Ihre Controller-Instanz manuell erstellen, müssen Sie diese selbst verwalten.

Kurz gesagt, Sie fehlen $container Feld wird mit setContainer Methode festgelegt. Deshalb erhalten Sie

Call to a member function has() on null

weil es noch nicht festgelegt ist.

+0

bitte helfen Sie mir damit, wie kann ich Container setzen? Wo soll ich hin? –

+0

'$ controllerInstance-> setContainer ($ container)' ;-) Ich weiß nicht, in welchem ​​Kontext du die Instanz des Controllers erstellst, daher ist es schwierig, dir im Detail zu helfen. Im Allgemeinen benötigen Sie die Instanz eines Service-Containers und übergeben diese direkt nach dem Erstellen an die 'setContainer'-Methode des Controllers. –

+0

funktionierte immer noch nicht für mich. oder ich bekomme nicht was zu tun ist. können Sie Beispielcode teilen, der die Initialisierung von $ container anzeigt. Dies könnte hilfreich sein. –

Verwandte Themen