我正在尝试重定向用户,如果他第一次登录到第2页,我尝试了以下
public function postLogin(Request $request){
$credentials = $request->only('login_email', 'login_password');
$credential = ['email'=> $credentials['login_email'], 'password' => $credentials['login_password']];
if (Auth::attempt($credential)) {
// if profile not set, redirect to step 2 page
if(Auth::user()->first_login) {
return $this->getStep2(Auth::user()->id);
}
}
但它告诉我
{"login":true}
我的getStep2()
就像
public function getStep2($id){
$genres = Track::orderBy('genre', 'asc')->groupBy('genre')->get();
$countries = Country::all();
$categories = Category::where('parent_id', '')->get();
$user_id = $id;
return view('users.step2', compact('genres', 'countries', 'categories', 'user_id'));
}
答案 0 :(得分:2)
如果你想重定向,你应该
return redirect('users/step2');
然后,在routes.php
中有这条路线
Route::get('users/step2', 'UserController@getStep2');
请注意,您不需要将用户ID实际作为参数传递,因为您可以使用Auth
外观访问它。
如果您要执行的操作实际上是加载视图,那么您的方法应该就是这样做的。我的猜测是你的一个方法在到达return
语句之前就结束了。
答案 1 :(得分:0)
您还可以使用redirect()->action(...)
方法。
public function postLogin(Request $request) {
$credentials = $request->only('login_email', 'login_password');
$credential = ['email' => $credentials['login_email'], 'password' => $credentials['login_password']];
if (Auth::attempt($credential)) {
// if profile not set, redirect to step 2 page
if (Auth::user()->first_login) {
return redirect()->action('Auth\AuthController@getStep2');
}
}
return redirect('/');
}
请注意,您仍然需要为此页面创建路线。
Route::get('step-two', ['uses' => 'Auth\AuthController@getStep2']);
要访问当前用户,您可以使用Auth::user()
方法。