Laravel 路由列表 (php artisan route:list) 在新行显示中间件

Laravel Route List (php artisan route:list) Displaying Middleware on New Lines

我最近注意到我的 Laravel 项目在终端中呈现路线列表的方式发生了变化。不再以逗号分隔中间件列,如果有多个中间件,它会将其添加到其父路由下方 table 中的新空白行。

这似乎是一个非常微不足道的问题,但是对于 laravel 来说是一个相对较新的问题,而且这是我用它制作的第一个合适的项目,我首先担心 laravel 以某种方式安装可能会在其他地方引起其他问题,并且我使用各种中间件添加的路由越多,显示所有路由时的 table 变得相当难以互操作,这在以前不是问题。

请参阅下面的路线截图 table 过滤后仅显示我项目中的 select 条路线,以便让您了解我所看到的情况。

谁知道为什么会发生这种变化,如果有办法让它恢复到以前的显示状态,方法是将所有中间件与所有其他数据保持在同一行,并以逗号分隔它们。

一时兴起,我在控制台中尝试了以下操作,但没有任何区别:

php artisan cache:clear php artisan routes:clear php artisan config:clear

说清楚,我希望看到的是这样的:

我得知 Laravel 几天前在他们的框架中更新了这个:

https://github.com/laravel/framework/pull/32993

这是提出这个问题的结果:

https://github.com/laravel/framework/issues/33041

如果你想再加分号

转到您的项目文件vendor\laravel\framework\src\Illuminate\Foundation\Console 然后打开文件 RouteListCommand.php

搜索功能getMiddleware

protected function getMiddleware($route)
    {
        return collect($this->router->gatherRouteMiddleware($route))->map(function ($middleware) {
            return $middleware instanceof Closure ? 'Closure' : $middleware;
        })->implode("\n");
    }

只需将 \n 更改为 , implode

如果您在 Laravel 8 中使用 Sanctum 时仍然遇到问题,这里是解决方法。

这条线我已经更换了

return collect($this->router->gatherRouteMiddleware($route))->map

打开这条线

return collect($route->gatherMiddleware())->map

在Laravel的核心文件中。通常,不推荐这样做,但我需要一个解决方案。有需要的也可以试试

更多详情,请访问下面link并参考我在本页的评论。

https://github.com/laravel/framework/commit/7ebd21193df520d78269d7abd740537a2fae889e