我设置了两个路由,其中一个接受参数,另一个路径只是一个URL,它应该路由到可以创建新用户的表单。但是,当我导航到/ users / create时,似乎我的getUser函数正在接收get请求并将我发送到我的user.blade.php而不是我的createUser.blade.php。
Route::get('/users/{id}', "UserController@getUser");
Route::get('/users/create', "UserController@createUser");
我在UserController中的方法是:
public function createUser(){
//TODO: Handle user creation.
return view('createUser');
}
public function getUser($id){
$user = User::find($id);
return view('userdetails', compact('user'));
}
答案 0 :(得分:3)
更改它们的顺序
Route::get('/users/create', "UserController@createUser");
Route::get('/users/{id}', "UserController@getUser");
Laravel将尝试自上而下匹配路线,因此您需要在类似匹配路线下变量的路线。
答案 1 :(得分:2)
处理此问题的更好,更安全的方法是
Route::get('/users/{id}', 'UserController@getUser')->where(['id' => '[0-9]+']);
Route::get('/users/create', 'UserController@createUser');
where()
尝试将id
字段与特定的正则表达式/正则表达式匹配。在这种情况下,[0-9]
表示 0-9 和+
之间的任何整数表示多次:)