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.
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:
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%Tags und Links dependency-injection symfony