web-dev-qa-db-fra.com

Gâteau PHP rediriger avec les paramètres dans l'url

J'ai une page vers laquelle je veux rediriger qui nécessite des paramètres dans l'URL: http://www.example.com/myController/myAction/param1:val1/param2:val2

Je sais qu'il existe une fonction de redirection CakePHP pour la redirection qui fonctionne comme suit:

 $this->redirect(array("controller" => "myController",
                       "action" => "myAction",
                       $data_can_be_passed_here),
                 $status, $exit);

Comment puis-je ajouter les paramètres que je souhaite dans le cadre de l'URL à l'aide de la fonction ci-dessus?

Je pense qu'il pourrait y avoir un autre élément que je pourrais ajouter au tableau afin que je puisse passer param1:val1 et param2:val2.

Toute aide serait grandement appréciée!

28
megaboss98

Je ne sais pas pourquoi je n'ai pas pu trouver cela dans la documentation de CakePHP, mais j'ai finalement trouvé la solution. Je le poste ici au cas où quelqu'un d'autre aurait le même problème. (Si quelqu'un sait où cela se trouve dans la documentation, veuillez également le poster, merci!)

Pour rediriger vers l'URL:

http://www.example.com/myController/myAction/param1:val1/param2:val2

Vous pouvez utiliser:

$this->redirect(array("controller" => "myController", 
                      "action" => "myAction",
                      "param1" => "val1",
                      "param2" => "val2",
                      $data_can_be_passed_here),
                $status,
                $exit);

J'espère que cela aide!

49
megaboss98

Si vous devez rediriger avec exactement les paramètres get, passez '?' index à $url argument de tableau:

$this->redirect(
    array(
          "controller" => "myController", 
          "action" => "myAction",
          "?" => array(
              "param1" => "val1",
              "param2" => "val2"
          ),
          $data_can_be_passed_here
    ),
    $status,
    $exit
);

Il redirige vers /myController/muAction/...?param1=val1&param2=val2

Cela est vrai au moins dans CakePHP 1.3

21
Serge S.

Au lieu de cela, vous pouvez également utiliser ce format

<?php

$this->redirect('/controller/action/par1:par1/par2:par2/');


?>

<?php

$this->redirect('/controller/action/id/10/name/hello/');

?>
4
Kiran

Je fais habituellement quelque chose comme ceci: $this->redirect(['action' => 'view', $id, 'admins' => true]);

J'espère que cela vous aidera.

2
D.Dimitrioglo