2016-12-05 46 views
0

嗨,我是新來laravel,卡住了。我的應用中有 有三種類型的用戶。他們的登錄數據保存在一個表(使用auth生成的用戶表)中,用char來定義用戶類型。我想要做的是當他們登錄時,用他們的user_id(從users表獲得)將url重定向到相關頁面。 底線是我想要得到的網址爲使用參數laravel 5.3 |進行重定向InvalidArgumentException在Response.php行462

本地主機:8000/ESProfile/15

其中值15是表的USER_ID。 我到目前爲止所做的是在下面。

在AuthenticatesUsers.php(從工匠AUTH自動生成)

protected function authenticated(Request $request, $user) 
{ 
    $userId = $user->id; 
    if($user->type === 's') { 
     return redirect('ESProfile', $userId); 
    } 
    else if($user->type === 'p') { 
     return redirect('/ePProfile'); 
    } 
    else if($user->type === 'i') { 
     return redirect('/ePDashboard'); 
    } 
} 

在web.php

Route::get('ESProfile/{id}', function($id){ return view('ESeeker.details')->with('$id'); }); 

,當我嘗試登錄,它給

InvalidArgumentException in UrlGenerator.php line 314: Route [ESProfile] not defined.錯誤。

與提前

in UrlGenerator.php line 314 
at UrlGenerator->route('ESProfile', array('15'), true) in helpers.php line 692 
at route('ESProfile', array('15')) in AuthenticatesUsers.php line 123 
at LoginController->authenticated(object(Request), object(User)) in AuthenticatesUsers.php line 107 
at LoginController->sendLoginResponse(object(Request)) in AuthenticatesUsers.php line 46 
at LoginController->login(object(Request)) 
at call_user_func_array(array(object(LoginController), 'login'), array(object(Request))) in Controller.php line 55 
at Controller->callAction('login', array(object(Request))) in ControllerDispatcher.php line 44 
at ControllerDispatcher->dispatch(object(Route), object(LoginController), 'login') in Route.php line 190 
at Route->runController() in Route.php line 144 
at Route->run(object(Request)) in Router.php line 642 
at Router->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 53 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in RedirectIfAuthenticated.php line 24 
at RedirectIfAuthenticated->handle(object(Request), object(Closure)) in Pipeline.php line 137 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in SubstituteBindings.php line 41 
at SubstituteBindings->handle(object(Request), object(Closure)) in Pipeline.php line 137 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in VerifyCsrfToken.php line 65 
at VerifyCsrfToken->handle(object(Request), object(Closure)) in Pipeline.php line 137 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in ShareErrorsFromSession.php line 49 
at ShareErrorsFromSession->handle(object(Request), object(Closure)) in Pipeline.php line 137 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in StartSession.php line 64 
at StartSession->handle(object(Request), object(Closure)) in Pipeline.php line 137 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37 
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) in Pipeline.php line 137 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in EncryptCookies.php line 59 
at EncryptCookies->handle(object(Request), object(Closure)) in Pipeline.php line 137 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 104 
at Pipeline->then(object(Closure)) in Router.php line 644 
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 618 
at Router->dispatchToRoute(object(Request)) in Router.php line 596 
at Router->dispatch(object(Request)) in Kernel.php line 267 
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request)) in Pipeline.php line 53 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 46 
at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in Pipeline.php line 137 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 104 
at Pipeline->then(object(Closure)) in Kernel.php line 149 
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 116 
at Kernel->handle(object(Request)) in index.php line 54 
at require_once('C:\xampp\htdocs\Project\public\index.php') in server.php line 21 

感謝一起。

回答

0

經過多次試驗發現我的答案。

在RegistersUsers.php(自動從PHP人員化妝生成的文件:AUTH)

public function register(Request $request){ 

    $this->validator($request->all())->validate(); 

    event(new Registered($user = $this->create($request->all()))); 

    $this->guard()->login($user); 
    $user = $request -> user(); 
     if(($user->type) == 's'){ 
      return $this->registered($request, $user)?: redirect()-> intended('/addPreferences/ESId='.$user->id); 
     } 
     if(($user->type) == 'p'){ 
      return $this->registered($request, $user)?: redirect()-> intended('/ePProfile/epID='.$user->id); 
     } 
    } 

追加期望路徑帶有打算方法確實起作用。謝謝。 (特別感謝iCode)

0

在你看來,你必須使用下面的代碼

route('ESProfile', ['id' => $id]) 

,因爲你還沒有定義任何地方ESProfile這將明顯失敗。

路線更改爲以下到工作堅持:

Route::get('ESProfile/{id}', function($id) { 
    return view('ESeeker.details')->with('$id'); 
})->name('ESProfile'); 

檢查文檔爲named routes

+0

嗨iCode回覆。我沒有在視圖中使用過類似的東西。在視圖中,當數據發佈時,控制器檢查auth,如果這是對char值的精確檢查,然後返回相關條目的id,並且我的代碼給出'HTTP狀態碼「15」無效。其中15是登錄用戶的ID。我想要的只是將url作爲'localhost:8000/ESProfile/15'。我不能只掌握它。 – 14k