2017-02-13 8 views
0

私はlaravelの新人です。 'user/{username}'ルートに移動してユーザー情報を取得できません。laravel '/ user/{username}'にルーティングしてユーザー情報を取得しない

理論的にはそれが動作するはずです、これは私のルートです:

Route::get('/user/{username}', function($username){ 
    $user = User::where('username',$username) -> first(); 
    if(isset($user['username'])){ 

     return redirect()->route('/user/'.$username, ['user' => $user]); 

    }else{ 

     return redirect()->route('/user/'.$username, ['error' => 'This User Does Not Exist']); 

    } 
}); 

それが動作するはずですので、私は、ページ内のuse App\User;をしました。私はこのエラーを取得しています:、すべてのヘルプは高く評価され
NotFoundHttpException in RouteCollection.php line 161:

ありがとう、uは助けるために任意のより多くの情報が必要な場合は私に知らせてください。

答えて

2

リダイレクトには、リダイレクト先のパスではなくルート名が使用されます。あなたのコードでは、このように、あなたのルートの名前を追加します。

Route::get('/user/{username}', function($username) { 
    [...] 
})->name('username'); 
// Here we call our route 'username' 

は今、あなたはこのようにリダイレクトすることが可能です。

// Note that we call redirect with the name we just gave it, passing the username value forward 
return redirect()->route('username', ['username' => $user]); 

編集:あなたのコードを見て、私は完全にあなたが望むものを理解していませんする。コードはリダイレクトループを作成するように見えますか?ユーザーが見つかった場合、同じルートにリダイレクトされているようですか?

+0

私が何を意味したものではありませんあなたの質問について、それは私がuは、ユーザ/ユーザ名に移動し、それらを表示する際、ユーザー情報を取得しようとしています私の主なエラーでした画面に情報がない場合は、表示しないで、そのユーザー名が基本的にユーザーでないことをユーザーに伝えます –

+0

btw私はあなたのユーザー名が好きです –

+0

ありがとう@redsecurity。私はLaravelにあまり慣れていませんが、理解しているので、これを行うためにリダイレクトする必要はありません。リダイレクトは、ユーザーが新しい要求を行ったかのようにユーザーを転送します。特定のユーザー名を持つユーザーが見つかったかどうかによって、異なる情報を表示したいだけですか?その場合、リダイレクトはここで使用する正しいものではありません。あなたのビューをレンダリングし、あなたのテンプレートに単純なelse/ifを付けることができます。 – OptimusCrime

0

firstOrFailを使用してください。このメソッドは、データベースにユーザーが見つからない場合は404エラーをスローします。

- >でユーザー列の値を呼び出します。したがって、コードは次のようになります。

Route::get('/user/{username}', function($username){ 
    $user = User::where('username',$username)->firstOrFail(); 
    return view('viewname', ['user' => $user]); 
} 

ユーザーページへのビューを作成することを忘れないでください。また、要求を処理するコントローラを作成する必要があります。

+0

私は既にビューを持っています –

+0

私はこの要求を私のUserControllerに入れようとしましたが、私はそれを実装する方法は考えていません、 'ミドルウェア' => 'auth'同様に –

+0

これはうまくいったけど、どうすればエラーを処理できますか?そのユーザー名がHandler.php行131: のNotFoundHttpExceptionを持つユーザーがいない場合、このエラーが発生します。[App \ User]モデルのクエリ結果はありません。 –

0
$user = User::where('username', '=', $user)->first(); 

これにしてみてください。..

+0

これは質問に対する答えを提供しません。十分な[評判](http://stackoverflow.com/help/whats-reputation)があれば、[任意の投稿にコメントする]ことができます(http://stackoverflow.com/help/privileges/comment)。代わりに、[質問者からの説明を必要としない回答を提供する](http://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- i-do-代わりに)。 - [レビューから](/レビュー/低品質の投稿/ 15198967) –

+0

あなたのアドバイスありがとう、私は心に留めておく.. –

関連する問題