重定向到 action/page LightVC PHP?
Redirect to action/page LightVC PHP?
简而言之,我正在尝试登录我的网站并在成功后显示不同的页面。流程是用户填写表单并提交,我使用 jquery $.post() 将数据 post 发送到控制器的 actionLogin。然后在 actionLogin 中,我验证用户并使用 header('dashboard/1')
重定向到另一个页面,其中仪表板是同一控制器中的另一个操作,1 是用户的 ID。我的问题是来自 actionDashboard 的页面实际上并未呈现。用户停留在登录页面上,我只在 jquery $.post 响应中获取仪表板的视图代码,因此我可以在登录时在控制台中看到它。有任何想法吗?我正在使用 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 框架没有任何关系。有什么想法吗?
谢谢!
我觉得你正在使用 Ajax post 并期望它重定向到不同的页面,这似乎是不可能的,因为 ajax 请求期望返回响应并在客户端的回调。
我认为您应该尝试删除 header 行代码,只渲染仪表板布局。
您可以尝试修改下面的代码并查看
//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');
}
简而言之,我正在尝试登录我的网站并在成功后显示不同的页面。流程是用户填写表单并提交,我使用 jquery $.post() 将数据 post 发送到控制器的 actionLogin。然后在 actionLogin 中,我验证用户并使用 header('dashboard/1')
重定向到另一个页面,其中仪表板是同一控制器中的另一个操作,1 是用户的 ID。我的问题是来自 actionDashboard 的页面实际上并未呈现。用户停留在登录页面上,我只在 jquery $.post 响应中获取仪表板的视图代码,因此我可以在登录时在控制台中看到它。有任何想法吗?我正在使用 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 框架没有任何关系。有什么想法吗?
谢谢!
我觉得你正在使用 Ajax post 并期望它重定向到不同的页面,这似乎是不可能的,因为 ajax 请求期望返回响应并在客户端的回调。
我认为您应该尝试删除 header 行代码,只渲染仪表板布局。
您可以尝试修改下面的代码并查看
//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');
}