在CakePHP中,当用户尝试访问受Auth组件保护的操作时,会将其重定向到登录页面。
因此,例如,如果我尝试进行操作:domain.com/posts/add
我需要domain.com/users/login
我想要做的是当发生类似这样的情况时,添加一个包含上一个网址的查询字符串,如下所示:domain.com/users/login?back=/posts/add
这是因为我已禁用autoRedirect
,因此重定向不再基于在会议上。
我如何添加此查询字符串?感谢
只是为了确认我知道如何使用登录方法中的查询字符串重定向用户,而不是当用户从需要授权的操作发送到登录页面时,如何首先发送查询字符串
答案 0 :(得分:2)
我是通过访问登录操作中的$this->Auth->redirect()
,并将该值解析为登录表单的隐藏参数,在表单提交时检查它是否存在,然后将用户发回给它。< / p>
即控制器:
function login() {
if($this->Auth->user()) { // User got logged in
if(!empty($this->data['User']['referer']) {
$this->redirect($this->data['User']['referer']);
} else {
// Take them to dashboard or something instead
}
} else {
// Set return_to to last page
$referer = $this->Auth->redirect();
if($referer == $this->here) {
$referer = false;
}
$this->set(compact('referer') );
}
}
在您的表单中,如$this->Form->input('referer', array('type' => 'hidden', 'value' => $referer ?: false);
- 注意PHP 5.3三元。