Ich habe keinen Zugriff auf den Container in meinem Controller

8

Ich versuche, auf einen Dienst in einem Symfony Controller zuzugreifen

%Vor%

Aber ich bekomme den nächsten Fehler:

%Vor%

Ich dachte, dass Symfony2 die Controller standardmäßig als Dienste definiert haben.

Hinweis: Diese Frage wurde ursprünglich von Dbugger gestellt, aber er hat sie ohne Grund entfernt, währenddessen wurde bereits beantwortet.

    
Emii Khaos 25.09.2013, 11:17
quelle

1 Antwort

15

Verwendung des Containers in Controllern

get() ist nur eine Verknüpfungsfunktion, die von der Symfony Basis-Controller-Klasse um auf den Container zuzugreifen.

Ihr Controller muss diese Klasse erweitern, um diese Funktion zu verwenden:

%Vor%

Wenn Sie (aus bestimmten Gründen) nicht von dieser Klasse abhängig sein möchten, können Sie erweitern ContainerAware , um den Container zu injizieren und zu verwenden, wie in get() Abkürzung:

%Vor%

Eigene Controller erstellen

Controller sind standardmäßig nicht als Services definiert, Sie können sie definieren, aber sie werden nicht benötigt, um den Container zu erhalten. Wenn eine Anfrage gestellt wird, bestimmt das Routing-Framework den Controller, der aufgerufen werden muss. Dann wird der Controller konstruiert und der Container wird über die % co_de injiziert % Methode.

Aber wenn Sie den Controller selbst bauen (in einem Test oder anderswo), müssen Sie den Container selbst injizieren.

%Vor%     
Emii Khaos 25.09.2013, 11:17
quelle

Tags und Links