2016-11-16 69 views
0

ユーザーIDとデータベースに既に保存されているユーザーIDを照合しようとしています。一致する場合はユーザーのさまざまな詳細を表示します。Laravel 5.2:同じユーザーの別のタブを開く

NotFoundHttpException in RouteCollection.php line 161 

はまた、私は、ユーザIDが一致するとすぐに、ユーザーのさまざまな詳細を開きたいが、それはどちらか動作していないです。しかし、エラーを示しています。ウェルカムページなしで試してみたところ、URLにuser_idを書くだけで、最初のタブが表示されていましたが、2番目のタブをクリックするとエラーが表示されます。詳細と公式はナビゲーションバーと機能のタブです。

はblade.php歓迎:

<form action="action_page.php"> 
    Enter user id: 
    <input type="number" name="user_id"> 
    <input type="submit"> 
</form> 

UserControllerで:

public function getUser(Request $request) 
{ 
    if (Auth::attempt(['user_id' => $user_id])) { 

     return redirect()->route('pages.Details'); 
    } 

     return redirect()->back(); 
} 


public function getPD($user_id) 
{ 
    $user = User::Find($user_id); 
    return view('pages.Details')->withUser($user); 
} 

public function getOD($user_id) 
{ 
    $user = User::Find($user_id); 
    return view('pages.Official')->withUser($user); 
} 

Userモデル:

protected $table = 'tbl_user'; 
protected $primaryKey = 'user_id'; 

のroutes.php:

Route::get('/', function() { 
return view('welcome'); 
}); 

Route::get('/User',[ 
    'uses' => '[email protected]', 
    'as' => 'getUser' 
    ]); 

Route::get('/PD',[ 
    'uses' => '[email protected]', 
    'as' => 'PD' 
    ]); 

私はいろいろ試してみましたが、うまくいきません。どうすればいいか教えてください。どんな提案も大歓迎です。

どのようにすれば、ユーザーはデータベースからのユーザーIDと一致させてから、詳細タブを最初に表示して詳細を表示できます。ユーザーが公式タブをクリックすると、そのテーブルが表示されます。

+0

あなたはlaravel構造に従っていません。 laravel Docsに行き、これをどう操作するかを見てください。 –

+0

私に教えてくださいlaravel構造に従っていないのはどこですか? –

+0

https://laravel.com/ –

答えて

0

Auth:attemp()は、ユーザーを認証し、ユーザーを取得しないために使用されます。

public function getUser(Request $request) 
{ 
    if (Auth::attempt(['user_id' => $user_id])) { 

     return redirect()->route('pages.Details'); 
    } 

     return redirect()->back(); 
} 

public function getUser(Request $request) 
{ 
    $userid= $request['user_id']; 
    $user = App\User::find($userid); 
    return redirect()->route('pages.Details')->with('user',$user); 
} 

とあなたの詳細テンプレートで$userを使用しますが、idでユーザーを取得したい場合は、この機能を変更する必要があります。

0

getUser()の方法では、認証されたユーザーを認証されていないユーザー以外のページにリダイレクトするように見えます。ここでは、それを達成するために何ができるかです:

<form method="GET" action="{{ route('getUser') }}"> 
    {{ csrf_field() }} 
    <label for="user_id_input" >Enter user id:</label> 
    <input type="number" id="user_id_input" name="user_id" value="{{ old('user_id') }}> 
    <input type="submit"> 
</form> 

welcome.blade.php

routes.phpの

Route::get('/', function() { 
    return view('welcome'); 
}); 

Route::get('/user',[ 
    'uses' => '[email protected]', 
    'as' => 'getUser' 
]); 

Route::get('/PD',[ 
    'uses' => '[email protected]', 
    'as' => 'PD' 
]); 

UserController.php

public function getUser(Request $request) 
{ 
    $user_id= $request->get('user_id'); 

    if(Auth::check() && Auth::user()->id === $user_id){ 
     return redirect()->route('PD'); 
    } 

    return back()->withInput();; 
} 

pubic function getPD($user_id) 
{ 
    $user = User::findOrFail($user_id); 
    return view('pages.Details', compact('user')); 
} 

public function getOD($user_id) 
{ 
    $user = User::findOrFail($user_id); 
    return view('pages.Official', compact('user')); 
} 

ビューのファイル構造

-views 
    -pages 
    -Details.blade.php 
    -Official.blade.php 
    -welcome.blade.php 

Details.blade.phpファイルで$ userを使用してください。

関連する問題