重定向到动作/页面LightVC PHP?

时间:2015-01-03 07:34:30

标签: php jquery redirect model-view-controller login

简而言之,我试图登录我的网站并在成功后显示不同的页面。流程是用户填写表单并提交,我使用jquery $ .post()将数据发布到控制器的actionLogin。然后在actionLogin中,我验证用户并使用header('dashboard/1')重定向到另一个页面,其中dashboard是同一控制器中的另一个操作,1是用户的id。我的问题是actionDashboard中的页面实际上没有呈现。用户被卡在登录页面上,我只在我的jquery $ .post响应中获取Dashboard的视图代码,所以我在登录时可以在控制台中看到它。有任何想法吗?我正在使用LightVC。以下是简化的代码:

main.js

$.post('/default/ajaxLogin', {
    email: $('#email').val(), 
    pass: $('#pass').val()
}, function(response) {
    console.log(response);
});

default.php(控制器)

//we start here where we can use main.js
public function actionIndex() 
{
    $this->setLayout('default');
    $this->setLayoutVar('pageTitle', 'Home');
}    
public function actionAjaxLogin() 
{ 
    //do some login verification
    //ok login successful, now redirect to dashboard
    header('Location: /dashboard/1');
}
public function actionDashboard($userId)
{
    $this->setLayout('dashboard');
    $this->setLayoutVar('pageTitle', 'Dashboard');
    $this->loadView('default/dashboard');
}

就像我说的那样,由于某种原因,页面实际上并没有渲染。我只在main.js的回复中得到了html。我从其他涉及Yii和Laravel的问题中看到了很多想法,但我的具体问题或LightVC框架却没有。有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

我觉得你正在使用Ajax帖子并期望它重定向到另一个页面,似乎不可能因为ajax请求期望响应并在客户端的回调中进行处理。

我认为你应该尝试删除代码标题行,只渲染仪表板布局。

您可以尝试以下修改过的代码,然后参阅

//we start here where we can use main.js
public function actionIndex() 
{
    $this->setLayout('default');
    $this->setLayoutVar('pageTitle', 'Home');
}    
public function actionAjaxLogin() 
{ 
    //do some login verification
    //ok login successful, now redirect to dashboard
    $this->actionDashboard(1);
    //header('Location: /dashboard/1');
}
public function actionDashboard($userId)
{
    $this->setLayout('dashboard');
    $this->setLayoutVar('pageTitle', 'Dashboard');
    $this->loadView('default/dashboard');
}