基地 RESTful 控制器与 Laravel 中的所有其他路线冲突
Base RESTful controller conflicting with all other routes in Laravel
我有一个 RESTful
控制器用于登录。但是这个 RESTful 控制器与所有其他路由冲突。我在所有其他路线上遇到异常 Controller method not found.
。
路线如下:
Route::controller('', 'LoginController');
Route::resource('receipe', 'ReceipeController');
Route::resource('user', 'UserController');
如果我将 LoginController
路线移到底部,或者如果为该路线提供基础 url,它工作正常。但是,如果 LoginController
位于顶部且没有底部 url,为什么所有其他路线都停止工作?
问题是这个控制器路由基本上捕获了每个请求。另请注意,您注册路线的顺序是 Laravel 通过它们找到匹配路线的顺序。 Route::controller('')
首先被检查并匹配所有内容,因此永远不会使用另一个。您有几个选项可以解决此问题:
- 只需更改路线的顺序即可。 (
Route::controller('')
在最底部)
指定LoginController
的显式路由。例如:
Route::get('', 'LoginController@index');
Route::get('register', 'LoginController@register');
等等..
使用静态 URL 段而不是根 (''
)。显然这会稍微改变你的 URL。
Route::controller('login', 'LoginController');
我有一个 RESTful
控制器用于登录。但是这个 RESTful 控制器与所有其他路由冲突。我在所有其他路线上遇到异常 Controller method not found.
。
路线如下:
Route::controller('', 'LoginController');
Route::resource('receipe', 'ReceipeController');
Route::resource('user', 'UserController');
如果我将 LoginController
路线移到底部,或者如果为该路线提供基础 url,它工作正常。但是,如果 LoginController
位于顶部且没有底部 url,为什么所有其他路线都停止工作?
问题是这个控制器路由基本上捕获了每个请求。另请注意,您注册路线的顺序是 Laravel 通过它们找到匹配路线的顺序。 Route::controller('')
首先被检查并匹配所有内容,因此永远不会使用另一个。您有几个选项可以解决此问题:
- 只需更改路线的顺序即可。 (
Route::controller('')
在最底部) 指定
LoginController
的显式路由。例如:Route::get('', 'LoginController@index');
Route::get('register', 'LoginController@register');
等等..使用静态 URL 段而不是根 (
''
)。显然这会稍微改变你的 URL。Route::controller('login', 'LoginController');