【发布时间】:2014-02-13 20:38:04
【问题描述】:
我不确定这是不是“正确”的做事方式,但逻辑是可行的。我在 Laravel 设置中有自己的课程,我在控制器中 use。在我的控制器中,我在自定义类中调用了一个函数,但是如果该函数中发生某些事情,我想重定向用户。
在 IRC 上聊天后,有人告诉我你不能在自己的类中进行重定向,你必须“从控制器返回重定向响应对象 ”。
不完全确定这意味着什么,但我想您必须改为从控制器执行重定向。
代码(已简化,正在运行):
Controller method:
// Validate the incoming user
$v = new SteamValidation( $steam64Id );
// Check whether they're the first user
$v->checkFirstTimeUser();
这会转到我的 SteamValidation 类(app/Acme/Steam/SteamValidation.php 和命名空间),它会进行检查:
public function checkFirstTimeUser() {
// Is there any users?
if( \User::count() == 0 ) {
$user_data = [
// Data
];
// Create the new user
$newUser = \User::create( $user_data );
// Log that user in
\Auth::login($newUser);
// Redirect to specific page
return \Redirect::route('settings');
}
return;
}
现在如果计数超过 0,那么它就会返回到控制器,我很乐意继续。但是,如果它是新用户并且我尝试进行重定向 (return \Redirect::route('settings');),我会得到一个空白页面!
所以我的问题是:
- 为什么我无法从这里重定向?
- 将响应返回给控制器,然后进行重定向的正确方法是什么?
【问题讨论】: