2012-01-23 131 views
1

是否可以通過重定向傳遞參數?我嘗試了很多選擇,但似乎沒有任何工作。我的最新做法是:通過重定向傳遞參數

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

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

而不是定義一個單獨的路徑來傳遞參數,你可以只做到以下幾點。 比方說,你想傳遞兩個參數:$ ARG1 & $ ARG2用戶的的HelloWorld行動控制器:

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