generateUrl außerhalb des Controllers

8

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:)

    
Sergejs Rižovs 17.03.2013, 07:38
quelle

3 Antworten

8

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.

    
Gmajoulet 17.03.2013, 15:46
quelle
12

Wenn Sie einen Blick in werfen Quellcode von Controller::generateUrl() , sehen Sie, wie es gemacht wird:

%Vor%

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% )

    
Wouter J 17.03.2013 08:00
quelle
2

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

verwenden     
r1pp3rj4ck 18.03.2013 11:22
quelle

Tags und Links