cakePHP3:如何通过重定向()将参数发送到操作?

cakePHP3:如何通过重定向()将参数发送到操作?,cakephp,cakephp-3.0,Cakephp,Cakephp 3.0,在一个动作中,我想通过重定向将参数发送到另一个动作 正如我在文档()中读到的: 我写道: public function activate($user_id, $token) { //.... of course $user->username is not null here return $this->redirect(['action' => 'login', $user->username]); //.... } 在我的目标行动中:

在一个动作中,我想通过重定向将参数发送到另一个动作

正如我在文档()中读到的:

我写道:

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)不会显示任何传递的参数


关于,

上述代码仅在登录功能位于同一控制器中且您无需返回时有效。 否则,我们还需要为重定向定义控制器。比如:

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

到底是什么问题,用户名没有添加到生成的URL中,或者,虽然URL中存在,但该值没有传递给方法?我不知道ndm,但它没有出现在URL中,但我认为用户名无论如何都不应该作为querystring传递,而且我在params中没有看到它,所以我根本就不传递它。如果用户名没有出现在URL中,那么是前者。它是否适用于硬编码字符串,如
['action'=>'login','foobar']
?除了无效的值或冲突的路由之外,我想不出有多少可能是这种行为的原因。因此,如果硬编码字符串也不起作用,请尝试删除除默认路由之外的所有路由,同时确保您拥有最新的CakePHP版本(
composer update
)。因此,如果我使用重定向(['action'=>'login','username'=>$user->username]);,我可以得到用户名作为查询字符串,所以,我会这样做,这是我想做的。厚度ndm
$this->redirect(['controller'=>'YourController','action' => 'login', $user->username]);