我有我的主屏幕与登录表单和注册按钮在以下位置-
http://localhost/myproject/user/login当用户点击注册按钮时,页面被重定向到-
http://localhost/myproject/user/register我有登录表单在页面的顶部和注册表单在底部。现在,当我填写登录表单并提交时,如果登录失败,用户将被重定向到
http://localhost/myproject/user/login 相反,我希望将用户重定向到 http://localhost/myproject/user/register我如何实现这个行为?
我会在你的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');
}
}
希望这对你有所帮助。如果没有,我会尝试一些东西,稍后再发布}
如果您添加代码示例,我们可能能够更好地帮助您。
听起来你有两个问题之一:
- 您有具有相同ID或名称的表单或提交按钮。
- 你的表单被张贴到同一个地方。
当登录失败时,您是否真的将重定向到/user/login ?或者登录表单操作url总是指向/user/登录页面,这意味着如果登录失败,您只需留在页面上,因为您在检查凭据时已经在该页面上了?
如果我是对的,当登录失败时,您可以通过检查/user/login操作中的referer来获得您想要的内容,在这种情况下,如果referer是/user/register,则重定向到/user/register。
在beforeFilter中自动重定向并手动重定向
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');
}
}
// ...
}