web-dev-qa-db-fra.com

Route de redirection Symfony 2

J'ai l'itinéraire suivant qui fonctionne via un get:

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

Où Canopy est l'espace de noms, le bundle est AbcBundle, contrôleur Crud, l'action est réussie.

Les échecs suivants:

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 

Comment puis-je rediriger avec generateUrl ()?

12
pigfox

Videz votre cache à l'aide de php app/console cache:clear

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

Si des paramètres sont requis, passez comme ceci:

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

La première ligne de votre YAML est le nom de l'itinéraire qui doit être utilisé avec le composant routeur. Vous essayez de générer une URL pour le mauvais nom d'itinéraire, le vôtre est CanopyAbcBundle_crud_success, Pas crud_success. De plus, la méthode generateUrl() fait ce qu'elle dit: elle génère une URL à partir du nom de la route et des paramètres (ils sont passés). Pour renvoyer une réponse de redirection 403, vous pouvez soit utiliser $this->redirect($this->generateUrl('CanopyAbcBundle_crud_success')) qui est intégrée à la classe de base Controller, soit renvoyer une instance de Symfony\Component\HttpFoundation\RedirectResponse Comme ceci:

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