【发布时间】:2015-07-17 16:01:58
【问题描述】:
主要应用路径:
Route::get('/login', [
'as' => 'user.login',
'uses' => 'LoginController@login'
];
Route::get('/logout', [
'as' => 'user.logout',
'uses' => 'LoginController@logout'
];
Route::get('/admin', [
'as' => 'admin.index',
'uses' => 'AdminController@index'
];
我有一个带有 routes.php 文件的包(供应商)(例如:metrakit/mypackage)。在这个文件中,我有一条路线:
Route::get('/{slug}', [
'as' => 'item.show',
'uses' => 'ItemController@show'
];
这条路线超载了我所有的主要路线!我的“/login”、“/logout”、“/bob”等路由都被重定向到我的控制器ItemController。
我不想有这样的路线
Route::get('/item/{slug}', array('as' => 'item.show', 'uses' => 'ItemController@show');
我想,我必须做一个这样的路线模式:
Route::pattern('slug', '^((?!(login|logout|admin)).)*$');
但它看起来有点脏,而且不是动态的。
所以我正在寻找更好的解决方案。
【问题讨论】:
-
问题在于路由的加载顺序。您可能正在使用包
boot()方法中的自定义路由加载。这会在您的常规路线之前加载您的包裹路线。在顶部放置一条包罗万象的路线将完成您现在所看到的。我想您最好的选择是不在引导方法中自动加载包中的路由,而是在 before 过滤器中手动加载它们(在加载常规路由之后)。
标签: php laravel laravel-4 laravel-routing