PHP Laravel中如何检测当前路由是否包含指定关键词(如students)
Laravel 判断当前路由包含指定关键词实现
你可以直接用Laravel内置的字符串辅助方法补全判断逻辑,框架已经处理了空值兼容等边界问题,比原生PHP字符串匹配更稳妥。
- 最简写法(兼容Laravel 6及以上版本,无需额外引入类)
直接用全局str()辅助函数链式调用contains方法,只要当前路由名任意位置包含students就会匹配成功,完全覆盖students/index、students/create、students/edit等所有相关路由场景:
if ( str(Route::currentRouteName())->contains('students') ) // 检测到路由包含students关键词,在此处执行页面标题翻译、同义词配置等业务代码 endif
- 静态类调用写法(兼容所有Laravel版本)
先在文件头部引入字符串工具类,再调用静态方法判断:
// 文件头部引入类 use Illuminate\Support\Str; // 判断逻辑 if ( Str::contains(Route::currentRouteName(), 'students') ) // 执行业务代码 endif
- 精准匹配优化
如果存在类似other/students这类非预期路由,不想被误命中,可以换成前缀匹配方法,仅匹配students模块下的路由:
if ( str(Route::currentRouteName())->startsWith('students') ) // 仅命中以students开头的路由名 endif
补充说明:如果你需要判断的是实际访问的URL路径(而非命名路由的名称)是否包含
students,只需要把判断条件里的Route::currentRouteName()替换为request()->path()即可,其余逻辑不变。
内容的提问来源于stack exchange,提问作者anas tair
相关产品推荐
相关产品推荐

