2016-11-30 167 views
1

我有兩條路由建立,其中一個需要一個參數,另一個只是一個URL,應該路由到可以創建一個新用戶的窗體。然而,當我導航到/用戶/創建它看起來像我的getUser函數接收穫取請求併發送給我的user.blade.php而不是我的createUser.blade.php。路由衝突Laravel

Route::get('/users/{id}', "[email protected]"); 
Route::get('/users/create', "[email protected]"); 

我在UserController的方法是:

public function createUser(){ 
    //TODO: Handle user creation. 
    return view('createUser'); 
    } 

    public function getUser($id){ 
    $user = User::find($id); 

    return view('userdetails', compact('user')); 

    } 

回答

2

處理這更好的和更安全的做法是

Route::get('/users/{id}', '[email protected]')->where(['id' => '[0-9]+']); 
Route::get('/users/create', '[email protected]'); 

where()試圖將id領域與特定正則表達式/正則表達式匹配。在這種情況下[0-9]意味着0-9+之間的任意整數表示多次 :)

+0

美麗,這工作完美。只是改變了正則表達式來匹配任何正整數。謝謝。 –

3

改變它們的順序

Route::get('/users/create', "[email protected]"); 
Route::get('/users/{id}', "[email protected]"); 

Laravel將嘗試匹配路徑自上而下的,所以你想要的是可變的那些在相似的匹配之下。

+0

這也適用。感謝您的建議。 –