Gibt es eine Möglichkeit, die generateUrl () -Methode außerhalb von Controllern zu verwenden?
Ich habe versucht, es in einer benutzerdefinierten Repository-Klasse mit $this->get('router')
zu verwenden, aber es hat nicht funktioniert.
update
Ich habe hier eine vorübergehende Lösung gefunden:
Ich habe den gesamten Service-Container in mein Repository eingefügt, obwohl es "nicht empfohlen" ist.
Aber es funktioniert für jetzt.
update2
Das Einfügen eines Routers anstelle des gesamten Containers ist wahrscheinlich eine bessere Idee:)
Den Container nicht in Ihr Repository injizieren ... Wirklich, nicht!
Wenn ich Sie wäre, würde ich einen Dienst erstellen und den Router darin injizieren. In diesem Dienst würde ich eine Methode erstellen, die das Repository verwendet und den benötigten Code über den Router hinzufügt.
Das ist viel weniger schmutzig und für einen anderen Entwickler einfach zu benutzen.
Wenn Sie einen Blick in werfen Quellcode von Controller::generateUrl()
, sehen Sie, wie es gemacht wird:
Grundsätzlich geben Sie einfach den Namen der Route ein ( $route
hier); falls vorhanden, einige Parameter ( $parameters
) und die Art der Referenz (eine der Konstanten der %Co_de% )
Injizieren Sie den Router selbst in Ihr EntityRepository (wie auf dem Post des Development Life-Blogs beschrieben) Symfony 2: Dienst als Abhängigkeit in das Doktrepository einfügen ), dann können Sie $this->router->generate('acme_route');
Tags und Links symfony