我是Laravel的新手。我有这样的网址example.com/admin
,一切都很好。但是当我想在管理中创建一个像example.com/admin/users
这样的路由时,我就有问题了。我的路线是这样的:
Route::group(['namespace' => 'Admin'], function() {
Route::resource('admin', 'AdminController');
Route::resource('admin/users', 'UsersController');
});
所以我通过artisan命令工具生成了控制器,如果我试图加载../admin/create
,它可以工作,但如果我尝试加载.../admin/users
,它会显示一个空白页面,但最奇怪的部分是.../admin/users/create
可以工作。
我是拉拉维尔的新手,所以也许我对路线的理解是错误的,我不能像现在这样做。提前谢谢。
Laravel路由就像贪婪匹配一样工作。在你的路线文件中,如果你有两条这样的路线
Route::group(['namespace' => 'Admin'], function() {
Route::resource('admin', 'AdminController');
Route::resource('admin/users', 'UsersController');
});
适用于admin/users
等URL的Laravel路由器,它将与admin
路由匹配。
因此,Laravel路由的一个好技巧是在按降序排列
The url has most backslashes value
您在最上面的路由文件&然后减少。
Route::group(['namespace' => 'Admin'], function() {
Route::resource('admin/users/**/**', '**');
Route::resource('admin/users/****', '***');
Route::resource('admin/users', 'UsersController');
Route::resource('admin', 'AdminController');
});
所以这里你的解决方案是,把你的第二条路线&第一个下降
Route::group(['namespace' => 'Admin'], function() {
Route::resource('admin/users', 'UsersController');
Route::resource('admin', 'AdminController');
});