我是Laravel的新手。我有这样的网址example.com/admin/users
,一切正常。但是当我想在管理员中制作一条像Route::group(['namespace' => 'Admin'], function() {
Route::resource('admin', 'AdminController');
Route::resource('admin/users', 'UsersController');
});
这样的路线时,我就有了问题。我的路线看起来像这样:
../admin/create
所以我通过artisan命令工具生成控制器,如果我尝试加载.../admin/users
它可以工作,但是如果我尝试加载.../admin/users/create
它会显示一个空白页面,但最奇怪的部分是{ {1}}有效。
我是Laravel的新手,所以也许我对路线的理解是错误的,我不能像我想做的那样。提前谢谢。
答案 0 :(得分:2)
Laravel路由就像贪婪的匹配。如果您有两条这样的路线
,请在您的路线文件中Route::group(['namespace' => 'Admin'], function() {
Route::resource('admin', 'AdminController');
Route::resource('admin/users', 'UsersController');
});
admin/users
等网址的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');
});