Section: Faire une redirection
« Un contrôleur pour REST | ^ Développement d'un module | Coder et utiliser des classes » |
− Table des matières
Il existe deux types d'objets de redirection possible :
jResponseRedirect
: redirige vers une action de l'application avec la possibilité de passer des paramètresjResponseRedirectUrl
: 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 redirigerparams
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
.