Cake PHP 使用 url 中的参数重定向

Posted

技术标签:

【中文标题】Cake PHP 使用 url 中的参数重定向【英文标题】:Cake PHP redirect with parameters in url 【发布时间】:2011-02-18 09:02:51 【问题描述】:

我有一个需要重定向到 URL 中的参数的页面: http://www.example.com/myController/myAction/param1:val1/param2:val2

我知道有一个用于重定向的 Cakephp 重定向函数,其工作原理如下:

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

如何使用上述函数添加我想要的参数作为 url 的一部分?

我认为可能还有另一个元素可以添加到数组中,这样我就可以传递param1:val1param2:val2

任何帮助将不胜感激!

【问题讨论】:

【参考方案1】:

我不知道为什么我无法在 CakePHP 文档中找到这个,但我终于找到了解决方案。我把它贴在这里,以防其他人有同样的问题。 (如果有人知道这在文档中的位置,请同时发布,谢谢!)

重定向到 URL:

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

你可以使用:

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

希望对你有帮助!

【讨论】:

干得好。如果文档中没有,您可以自己注册并将其添加到 The CookBook 中,以便其他人受益。 当 Cake 方法接受一个 URL 而你传入一个数组时,Router::url() 用于获取链接的字符串表示形式 (api.cakephp.org/class/router#method-Routerurl)。您可以通过简单地将 Cake 的命名参数合并到您传入的 URL 数组中(例如$this->redirect(array_merge(array('controller' => ...), $this->passedArgs)))来在重定向或链接中保留 Cake 的命名参数【参考方案2】:

如果您需要使用精确获取参数进行重定向,则将'?' 索引传递给$url 数组参数:

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

它重定向到/myController/muAction/...?param1=val1&param2=val2

至少在 CakePHP 1.3 中是这样

【讨论】:

也适用于 CakePHP 2.2.3。 在 2.4.6 上像魅力一样工作。谢谢。【参考方案3】:

您也可以使用这种格式

<?php

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


?>

<?php

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

?>

【讨论】:

【参考方案4】:

我通常会这样做:$this-&gt;redirect(['action' =&gt; 'view', $id, 'admins' =&gt; true]);

希望对你有帮助。

【讨论】:

【参考方案5】:

CakePHP 4.2 中,"param" =&gt; "val1" 似乎不再起作用了。

这就是你要走的路:

return $this->redirect(['controller'=>'mycontroller','action' => 'myview', 'myparameter']);

【讨论】:

以上是关于Cake PHP 使用 url 中的参数重定向的主要内容,如果未能解决你的问题,请参考以下文章

servlet如何重定向

使用 URL 参数的 PHP 重定向

使用参数重定向 PHP URL

WordPress对url做重定向处理

我需要撤消重定向插件完成的重定向 URL

根据缺少 URL 参数或参数是不是为空来重定向页面 - PHP