Передача параметров через редирект - PullRequest
1 голос
/ 24 января 2012

Можно ли передать параметры через редирект? Я перепробовал много вариантов, но ничего не работает. Мой последний подход:

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 ]

2 голосов
/ 24 января 2012

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 голос
/ 28 мая 2012

Вместо определения отдельного маршрута для передачи аргументов вы можете просто сделать следующее. Допустим, вы хотите передать 2 аргумента: $ arg1 & $ arg2 действию helloworld вашего контроллера Users :

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