2014-04-07 22 views
9

Ho il seguente itinerario che funziona tramite un get:Symfony 2 redirect percorso

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

Dove Canopy è lo spazio dei nomi, il fascio è AbcBundle, regolatore Crud, l'azione è successo.

Di seguito fallisce:

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 

Come posso reindirizzare con generateUrl()?

+3

si dovrebbe essere in uso: return $ questo -> redirect ($ this-> generateUrl ('CanopyAbcBundle_crud_success')); –

risposta

17

Cancella la cache utilizzando php app/console cache:clear

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

Se i parametri sono necessari passaggio in questo modo:

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

La prima riga del tuo YAML è il nome della rotta che deve essere utilizzato con il router componente. Stai provando a generare un URL per il nome percorso errato, il tuo è CanopyAbcBundle_crud_success, non crud_success. Inoltre, il metodo generateUrl() fa ciò che dice: genera un URL dal nome della rotta e dai parametri (vengono passati). Per restituire una risposta 403 di reindirizzamento, è possibile usare sia $this->redirect($this->generateUrl('CanopyAbcBundle_crud_success')) che è costruito nella classe Controller di base, o si potrebbe restituire un'istanza di Symfony\Component\HttpFoundation\RedirectResponse come questo:

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