You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 5.5如何判断当前路由所属的路由组?

判断Laravel 5.5当前路由是否属于guest中间件组的方案

当然可以实现!不用手动维护路由列表,直接通过当前路由的中间件信息就能判断它是否属于guest路由组,下面给你几个实用的方案:

1. 直接在控制器/视图中判断

你可以直接获取当前路由实例,然后检查它的中间件列表里是否包含guest:

// 获取当前路由对象
$currentRoute = request()->route();
// 判断是否属于guest路由组
$isGuestRoute = $currentRoute ? in_array('guest', $currentRoute->middleware()) : false;

在Blade视图里可以直接这样用:

@if(request()->route() && in_array('guest', request()->route()->middleware()))
    <!-- 这里放你的模态框代码 -->
    <div class="modal fade show" ...>
        <!-- 模态框内容 -->
    </div>
@endif

2. 封装成请求宏,使用更优雅

如果你想让代码更简洁,贴近你期望的$request()->currentRoute()->isGuest()那样的调用方式,可以在AppServiceProvider的boot方法里注册一个请求宏:

<?php

namespace App\Providers;

use Illuminate\Http\Request;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        Request::macro('isGuestRoute', function () {
            $route = $this->route();
            return $route && in_array('guest', $route->middleware());
        });
    }

    // ... 其他方法
}

注册完成后,你在任何地方(控制器、视图、甚至服务类里)都可以直接调用:

// 控制器里
if (request()->isGuestRoute()) {
    // 执行相关逻辑
}

// Blade视图里
@if(request()->isGuestRoute())
    <!-- 模态框代码 -->
@endif

原理说明

Laravel的路由组中定义的中间件,会被自动应用到组内的每一条路由上。通过$route->middleware()方法可以获取到当前路由所应用的所有中间件数组,只要这个数组里包含guest,就说明该路由属于你定义的guest路由组——完全不需要手动维护路由列表,非常灵活。

内容的提问来源于stack exchange,提问作者TheRealPapa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:07:17