簡體   English   中英

Laravel 4路由參數

[英]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/blogmysite.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM