[英]Laravel 4 routing parameters
我是Laravel的新手,到目前為止真的很享受。 我正在使用L4,並希望在路由方面提供一些幫助,我仍然試圖解決這個問題。
我想要uri domain.com/{username}
我可以獲得domain.com/{user_id}
並且Laravel查找用戶但我似乎無法使用用戶名作為參數。
編輯:
我正在使用模型進行用戶路由
Route::model('user', 'User');
然后嘗試路線
Route::get('/{user}', 'sampleController@viewUser');
還要注意它是在所有其他路線之后
提前致謝!
您好,歡迎來到Laravel!
您可以使用此路線注冊。
Route::get('{username}', function($username){
$user = User::whereUsername($username)->fist();
if (! is_null($user)) {
return View::make('profile', compact('user'));
}
});
...但是如果你去mysite.com/blog
或mysite.com/contact
或其他什么,這個URL將被先前的模式捕獲。
其實沒問題,只需注冊博客/聯系方式/之前的路線,就像這樣!
Route::get('blog', function(){
return 'blog page';
});
Route::get('contact', function(){
return 'contact page';
});
// To have username in URL discard Route::model call and add this
Route::get('{username}', function($username){
$user = User::whereUsername($username)->fist();
if (! is_null($user)) {
return View::make('profile', compact('user'));
}
});
你可以試試這個沒有Route :: model的東西
Route::get('user/{username}', function($username)
{
$user = User::where('username',$username)->first();
})
->where('name', '[A-Za-z]+');
更好的是,您可以使用Route::bind()
:
Route::bind('user', function($value, $route)
{
return User::whereUsername($value)->first();
});
現在,您可以訪問該用戶而無需在路徑定義中手動調用它:
Route::get('{user}', function(User $user){
if (!is_null($user)) {
return View::make('profile', compact('user'));
}
});
這將適用於您定義的使用{user}
參數的所有路由。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.