我的主屏幕上有以下位置的登录表格和注册按钮 -
http://localhost/myproject/user/login
当用户点击“注册”按钮时,页面将重定向到 -
http://localhost/myproject/user/register
我在页面顶部有登录表格,在底部有登记表格。现在当我填写登录表单并提交时,如果登录失败,用户将被重定向到
http://localhost/myproject/user/login
相反,我希望将用户重定向到
http://localhost/myproject/user/register
我该如何实现这种行为?
答案 0 :(得分:0)
如果您添加代码示例,我们可以更好地为您提供帮助。
听起来你有两个问题之一:
答案 1 :(得分:0)
当登录失败时,你真的重定向到/ user / login吗?或者登录表单操作URL总是指向/ user / login页面,这意味着如果登录失败,您只需保留在此页面上,因为您在检查凭据时已经在其中?< / p>
如果我是对的,你可以通过在登录失败时检查/ user / login操作中的referer来获得你想要的东西,在这种情况下,如果referer是/ user / register,则重定向到/ user / register。 / p>
答案 2 :(得分:0)
在beforeFilter中关闭autoRedirect并手动重定向
function beforeFilter()
{
parent::beforeFilter();
$this->Auth->autoRedirect = false;
}
function login()
{
if ($this->RequestHandler->isPost()
{
if ($this->Auth->user()
{
$this->redirect($this->Auth->redirect());
}
else
{
$this->redirect('/users/register');
}
}
// ...
}
答案 3 :(得分:0)
我会像你这样在你的Users_Controllers中做点什么......
注意:我没有尝试过,我不确定它是否有效...我可以在尝试之后重新发布...
首先,您需要将自动重定向设置为False
class UsersController extends AppController{
//...
function beforeFilter(){
parent::beforeFilter();
$this->Auth->autoRedirect = FALSE;
}
function login(){
if( !(empty($this->data)) && $this->Auth->user() ){
//...
}else{
//If useR didnt/cant login redirect to register
$this->redirect(array('controller' => 'users', 'action' => 'register'));
// Or if you have routes setup for /register
$this->redirect('/register');
}
}
希望这会帮助你。如果不是,我会稍后尝试一些事情并重新发布 }