Laravel中如何判断当前路由无前缀?
几种直观区分管理员/用户路由的方案
1. 直接判断空前缀
Laravel里无前缀的路由,调用getPrefix()返回的是空字符串(''),而非你预想的'/',所以直接用以下代码判断用户路由即可:
Route::current()->getPrefix() === ''
2. 用中间件做标记
给所有管理员路由统一添加专属中间件(比如admin):
Route::prefix('admin')->middleware('admin')->group(function () { // 所有管理员路由定义在这里 });
后续判断当前路由是否属于管理员组,直接检查中间件集合:
in_array('admin', Route::current()->gatherMiddleware())
这种方式逻辑更健壮,哪怕后续管理员路由前缀变更,只要中间件标识不变,判断逻辑无需修改。
3. 利用路由名称前缀
给管理员路由分组设置名称前缀admin.:
Route::prefix('admin')->name('admin.')->group(function () { // 管理员路由定义 });
判断时通过路由名称前缀区分:
str_starts_with(Route::currentRouteName(), 'admin.')
对应的用户路由可直接判断名称不包含admin.前缀,可读性极强,后续维护也不容易混淆。
内容的提问来源于stack exchange,提问作者user21640841
相关产品推荐
相关产品推荐

