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:val1
和param2: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->redirect(['action' => 'view', $id, 'admins' => true]);
希望对你有帮助。
【讨论】:
【参考方案5】:在 CakePHP 4.2 中,"param" => "val1"
似乎不再起作用了。
这就是你要走的路:
return $this->redirect(['controller'=>'mycontroller','action' => 'myview', 'myparameter']);
【讨论】:
以上是关于Cake PHP 使用 url 中的参数重定向的主要内容,如果未能解决你的问题,请参考以下文章