Laravel Route::group[] 无法正常工作
Posted
技术标签:
【中文标题】Laravel Route::group[] 无法正常工作【英文标题】:Laravel Route::group[] not working correctly 【发布时间】:2021-04-06 13:08:50 【问题描述】:我有想按名称、前缀和中间件组合在一起的路由。出于某种原因,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 |
【问题讨论】:
【参考方案1】:您应该像这样用as
替换name
数组条目:
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');
);
【讨论】:
我真的很喜欢这个。谢谢!以上是关于Laravel Route::group[] 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Laravel 4 中为 Route::group 设置正则表达式参数约束?
我可以在 Laravel 中向 Route::group 添加参数,但在调度到 Laravel 中的路由之前将其删除吗?