Laravel路由组第二个参数?

Laravel Route Group Second Parameter?

我将我的项目从 laravel 5.5.* 更新到 5.5.43... 在更新之前一切正常。但是更新后,我在 route/web.php.

中看到一条警告消息

It says: Required parameter $routes missing.

但一切正常。然后,当我在第二个参数中放入一个空字符串时,警告消息消失了。

所以我的问题是:

  1. 我应该在所需的第二个参数中输入什么?
  2. 如果需要,为什么一切正常?它应该是可选的。

这在 Laravel 中实际上很难理解。您的 IDE 正在从 Router 而不是 RouteRegistrar 中提取组定义。

里面Router.php:

public function group(array $attributes, $routes)

这支持旧式的路由组定义,其中中间件在属性中定义,您的路由闭包将是第二个参数。

里面RouteRegistrar.php:

public function group($callback)

这是组只接受闭包的新样式。


我不喜欢他们在 __call 中使用条件而不是为中间件定义方法,但是当您调用 Route::middleware 时,外观转发到 Router 和 Router::__call 由于这一行而返回一个 RouteRegistrar 实例:

    if ($method == 'middleware') {
        return (new RouteRegistrar($this))->attribute($method, is_array($parameters[0]) ? $parameters[0] : $parameters);
    }