Raccourcis : Contenu - rubriques - sous rubriques
EN FR

Il existe deux types d'objets de redirection possible :

  • jResponseRedirect : redirige vers une action de l'application avec la possibilité de passer des paramètres
  • jResponseRedirectUrl : redirige vers une URL quelconque, en particulier une URL externe à votre application jelix

jResponseRedirect

Pour spécifier une redirection vers une action, vous indiquez le type 'redirect'. Vous récupérez la réponse comme ceci :


$rep = $this->getResponse('redirect');

Vous avez alors dans $rep une instance de la classe jResponseRedirect.

Vous avez ensuite trois propriétés sur cet objet :

  • action pour indiquer l'action vers laquelle rediriger
  • params pour indiquer les paramètre d'une action (tableau associatif)
  • anchor pour indiquer la partie "ref" de l'url (#anchor)

Exemple :


$rep->action = "monmodule~moncontroleur:mamethode";
$rep->params = array('foo' => 'bar');
$rep->anchor = 'yo';

Définir ces propriétés est facultatif. Ainsi, si on n'indique pas l'action, ce sera l'action actuelle.

Et ensuite il n'y a plus qu'à renvoyer la réponse.


return $rep;

Il existe une méthode raccourci sur les contrôleurs : redirect($action, $parameters, $anchor)



return $this->redirect("monmodule~moncontroleur:mamethode", array('foo' => 'bar'), 'yo');

jResponseRedirectUrl

Pour spécifier une redirection vers une URL quelconque, vous indiquez le type 'redirectUrl'. Vous récupérez la réponse comme ceci :


$rep = $this->getResponse('redirectUrl');

Vous avez alors dans $rep une instance de la classe jResponseRedirectUrl. Cet objet possède une unique propriété, $url qui doit contenir une chaine, l'url de la page vers laquelle rediriger (en général, il s'agira d'une url externe à l'application jelix, jResponseRedirect étant plus approprié pour les urls vers l'application jelix).


$rep->url = "https://jelix.org";
return $rep;

Il existe une méthode raccourci sur les contrôleurs : redirectUrl($url)



return $this->redirectUrl("https://jelix.org");

Redirection temporaire ou permanente

Par défaut, les redirections sont déclarées temporaires (code http 303). Si vous voulez indiquer au navigateur une redirection permanente, mettez la propriété temporary à false.


$rep->temporary = false;

Ou pour les méthodes redirectUrl() et redirect(), ajoutez en dernier paramètre false.