2014-04-07 13 views
9

Ich habe die folgende Route, die über eine get funktioniert:Symfony 2 Umleitungsroute

CanopyAbcBundle_crud_success: 
    pattern: /crud/success/ 
    defaults: { _controller: CanopyAbcBundle:Crud:success } 
    requirements: 
    _method: GET 

Wo Canopy den Namespace ist, das Bündel AbcBundle, Controller Crud, Aktion ist der Erfolg.

Die folgenden fehlschlägt:

return $this->redirect($this->generateUrl('crud_success')); 

Unable to generate a URL for the named route "crud_success" as such route does not exist. 
500 Internal Server Error - RouteNotFoundException 

Wie kann ich umleiten mit generateUrl()?

+3

sollten Sie sein Gebrauch: return $ this -> redirect ($ this-> generateUrl ('CanopyAbcBundle_crud_success')); –

Antwort

17

löschen Cache php app/console cache:clear

return $this->redirect($this->generateUrl('CanopyAbcBundle_crud_success')); 

mit der Wenn-Parameter übergeben, wie dies erforderlich sind:

return $this->redirect($this->generateUrl('CanopyAbcBundle_crud_success', array('param1' => $param1)), 301); 
4

Die erste Zeile Ihres YAML ist die Route, Namen, der mit dem Router verwendet werden soll Komponente. Sie versuchen, eine URL für den falschen Routennamen zu generieren, deins ist CanopyAbcBundle_crud_success, nicht crud_success. Auch Methode tut, was es sagt: es erzeugt eine URL aus Route Name und Parameter (es sind sie übergeben). Um eine 403-Weiterleitung Antwort zurückgeben, können Sie entweder $this->redirect($this->generateUrl('CanopyAbcBundle_crud_success')) verwenden, die in die Controller Basisklasse gebaut wird, oder Sie können eine Instanz von Symfony\Component\HttpFoundation\RedirectResponse wie folgt zurück:

public function yourAction() 
{ 
    return new RedirectResponse($this->generateUrl('CanopyAbcBundle_crud_success')); 
}