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]);