2014-11-20 3 views
3

В действии я хочу отправить параметры отправки в другое действие с помощью перенаправления.cakePHP3: Как отправить параметры в действие через redirect()?

Так как я прочитал это в документации (http://book.cakephp.org/3.0/en/controllers.html#redirecting-to-other-pages):

return $this->redirect(['action' => 'edit', $id]); 

Я писал:

public function activate($user_id, $token) { 

    //.... of course $user->username is not null here 
    return $this->redirect(['action' => 'login', $user->username]); 

    //.... 
} 

И в моих целевых действиях:

public function login($username = null) { 

    //... 

    debug($username); // just displays null 

    //... 
} 

я не делаю понять, есть ли проблема в redirect() или в login(). В любом случае отладка ($ this-> request) не отображает переданных параметров.

С уважением,

+1

В чем проблема: имя пользователя не добавляется к сгенерированному URL-адресу или значение, которое не передается методу, хотя оно присутствует в URL-адресе? – ndm

+1

Я действительно не знаю ndm, но он не отображается в URL-адресе, но я думаю, что имя пользователя не должно быть передано как querystring в любом случае, и я не вижу его в параметрах, поэтому я не переношу его вообще. – 2ndGAB

+0

Ну, если имя пользователя не отображается в URL-адресе, то это первое. Он работает с жестко закодированной строкой, например '['action' => 'login', 'foobar']'? Я не могу думать, что это может быть причиной такого поведения, других недопустимых значений или противоречивых маршрутов. Поэтому, если он также не работает с жестко запрограммированной строкой, попробуйте удалить все, кроме маршрутов по умолчанию, также убедитесь, что у вас есть последняя версия CakePHP ('composer update'). – ndm

ответ

3

Приведенный выше код работает только тогда, когда функция Войти в том же контроллере, и вам не нужно возвращаться. еще нам нужно определить контроллер, а также для перенаправления. Нравится:

$this->redirect(['controller'=>'YourController','action' => 'login', $user->username]); 
+0

конечно, конечно !! – 2ndGAB