2017-02-13 124 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:

任何幫助表示讚賞,謝謝,請讓我知道如果你需要更多的信息,以幫助。

回答

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

關於你的問題,是不是我的意思做的,這是我的主要錯誤我試圖獲取用戶信息時ü去給用戶/用戶名,並顯示它們在屏幕上,如果沒有信息,那麼不顯示,然後告訴用戶,基本上沒有該用戶名的用戶 –

+0

btw我喜歡你的用戶名lol –

+0

謝謝@redsecurity。我對Laravel不太熟悉,但正如我所瞭解的那樣,您不需要重定向來執行此操作。重定向將發送用戶,如同他(她)做了一個新請求一樣。您只是希望顯示不同的信息,具體取決於是否找到了具有給定用戶名的用戶?如果是這樣,重定向不是在這裏使用的正確的東西。你可以渲染你的視圖,並在你的模板中有一個簡單的else。 – OptimusCrime

0

您應該使用firstOrFail。如果在數據庫中找不到用戶,此方法將引發404錯誤。

使用 - >調用用戶列值。所以,你的代碼應該是這樣的:

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

不要忘記創建一個視圖到您的用戶頁面。你也應該創建一個控制器來處理這個請求。

+0

我已經有了看法 –

+0

我試圖把這個請求放在我的UserController中,但我不知道如何實現它,我想給它'middleware'=>'auth'以及 –

+0

這工作,但我如何處理錯誤,如果我得到一個?我得到這個錯誤,如果沒有用戶使用該用戶名NotFoundHttpException Handler.php行131: 模型[應用程序\用戶]沒有查詢結果。 –

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-代替)。 - [來自評論](/ review/low-quality-posts/15198967) –

+0

感謝您的建議,我會牢記這一點.. –