Laravel Route::group[] 工作不正常
Laravel Route::group[] not working correctly
我有一些路由,我想按名称、前缀和中间件组合在一起。由于某种原因,Route::group 函数的 'name' 选项未正确尾随名称。我的代码不正确,或者这是一个错误?下面是路由组定义。
Route::group(['name' => 'admin.', 'prefix' => 'admin',
'middleware' => 'admin'], function () {
Route::get('/', function () {
return 'the index page';
})->name('index');
Route::get('/another', function () {
return 'another page';
})->name('another');
});
然后我清除并缓存了路由。这是列表。
+--------+----------+------------------------+-----------------------------+------------------------------------------------------------------------+------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+------------------------+-----------------------------+------------------------------------------------------------------------+------------+
| | GET|HEAD | admin | index | Closure | web |
| | | | | | admin |
| | GET|HEAD | admin/another | another | Closure | web |
| | | | | | admin |
我希望在名称中看到 admin.index、admin.another、...
但是,如果我使用 Route::name 函数,它将正常工作。
Route::name('admin.')->group(function () {
Route::prefix('admin')->group(function () {
Route::middleware('admin')->group(function () {
Route::get('/', function () {
return 'the index page';
})->name('index');
Route::get('/another', function () {
return 'another page';
})->name('another');
});
});
});
+--------+----------+------------------------+-----------------------------+------------------------------------------------------------------------+---------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+------------------------+-----------------------------+------------------------------------------------------------------------+---------------+
| | GET|HEAD | admin | admin.index | Closure | web |
| | | | | | admin |
| | GET|HEAD | admin/another | admin.another | Closure | web |
| | | | | | administrator |
您应该将 name
数组条目替换为 as
,如下所示:
Route::group(['as' => 'admin.', 'prefix' => 'admin',
'middleware' => 'admin'], function () {
Route::get('/', function () {
return 'the index page';
})->name('index');
Route::get('/another', function () {
return 'another page';
})->name('another');
});
不过我相信您的第二种方法更具可读性。但请记住,没有必要为每个 属性 定义一个 group
方法,您可以简单地链接所有方法并在末尾定义一个 group
方法:
Route::name('admin.')
->prefix('admin')
->middleware('admin')
->group(function () {
Route::get('/', function () {
return 'the index page';
})->name('index');
Route::get('/another', function () {
return 'another page';
})->name('another');
});
我有一些路由,我想按名称、前缀和中间件组合在一起。由于某种原因,Route::group 函数的 'name' 选项未正确尾随名称。我的代码不正确,或者这是一个错误?下面是路由组定义。
Route::group(['name' => 'admin.', 'prefix' => 'admin',
'middleware' => 'admin'], function () {
Route::get('/', function () {
return 'the index page';
})->name('index');
Route::get('/another', function () {
return 'another page';
})->name('another');
});
然后我清除并缓存了路由。这是列表。
+--------+----------+------------------------+-----------------------------+------------------------------------------------------------------------+------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+------------------------+-----------------------------+------------------------------------------------------------------------+------------+
| | GET|HEAD | admin | index | Closure | web |
| | | | | | admin |
| | GET|HEAD | admin/another | another | Closure | web |
| | | | | | admin |
我希望在名称中看到 admin.index、admin.another、...
但是,如果我使用 Route::name 函数,它将正常工作。
Route::name('admin.')->group(function () {
Route::prefix('admin')->group(function () {
Route::middleware('admin')->group(function () {
Route::get('/', function () {
return 'the index page';
})->name('index');
Route::get('/another', function () {
return 'another page';
})->name('another');
});
});
});
+--------+----------+------------------------+-----------------------------+------------------------------------------------------------------------+---------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+------------------------+-----------------------------+------------------------------------------------------------------------+---------------+
| | GET|HEAD | admin | admin.index | Closure | web |
| | | | | | admin |
| | GET|HEAD | admin/another | admin.another | Closure | web |
| | | | | | administrator |
您应该将 name
数组条目替换为 as
,如下所示:
Route::group(['as' => 'admin.', 'prefix' => 'admin',
'middleware' => 'admin'], function () {
Route::get('/', function () {
return 'the index page';
})->name('index');
Route::get('/another', function () {
return 'another page';
})->name('another');
});
不过我相信您的第二种方法更具可读性。但请记住,没有必要为每个 属性 定义一个 group
方法,您可以简单地链接所有方法并在末尾定义一个 group
方法:
Route::name('admin.')
->prefix('admin')
->middleware('admin')
->group(function () {
Route::get('/', function () {
return 'the index page';
})->name('index');
Route::get('/another', function () {
return 'another page';
})->name('another');
});