通过重定向传递参数

时间:2012-01-23 23:13:29

标签: php url-routing lithium

是否可以通过重定向传递参数?我尝试了很多选择,但似乎没有任何效果。我的最新方法是:

return $this->redirect(array('Users::helloworld', 'args' => array('id' => 'myId')));

然后我创建了一条路线:

Router::connect('/Users/helloworld?id={:id}', array('controller' => 'Users', 'action' => 'helloworld'));

但我得到的只是users/helloworld/myId

2 个答案:

答案 0 :(得分:2)

args是路线的一部分,将使用非常通用的路线(不是您创建且不需要的路线)转换为URL

要获取查询字符串,只需使用?键:

return $this->redirect(array(
    'Users::helloworld',
    '?' => array('id' => $myId)
));
// will use the route:
//    /{:controller}/{:action}/{:args}
// and generate
//    /users/helloworld?id=$myId

对此的测试:https://github.com/UnionOfRAD/lithium/blob/master/tests/cases/net/http/RouteTest.php#L374-405

答案 1 :(得分:1)

您可以执行以下操作,而不是定义传递参数的单独路径。 假设您想传递两个参数: $ arg1 & $ arg2 用户控制器的 helloworld 操作:

return $this->redirect(array(
'Users::helloworld',
'args' => array(
        $arg1,
        $arg2
    )
));