拉拉维尔 - 将用户重定向到个人资料页面



如果用户第一次登录到step2页面,我正在尝试重定向用户,我已经尝试了以下方法

    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'));
}

如果你想重定向,你应该

return redirect('users/step2');

然后,在你的routes.php有这条路线

Route::get('users/step2', 'UserController@getStep2');

请注意,您不需要实际将用户 id 作为参数传递,因为您可以使用 Auth 外观访问它。


如果您尝试执行的操作实际上是加载视图,那么您的方法应该这样做。我的猜测是,您的一种方法在到达return语句之前就结束了。

您也可以使用 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('AuthAuthController@getStep2');
        }
    }
    return redirect('/');
}

请注意,您仍然需要为此页面创建路由。

Route::get('step-two', ['uses' => 'AuthAuthController@getStep2']);

要访问当前用户,您可以使用Auth::user()方法。

最新更新