首页 > 解决方案 > 如何在 Laravel 中的所有分组路线上设置定位

问题描述

我正在使用 Laravel,并且我已经将所有路由都用于仪表板,所以我想用这样的 url 更改语言:

http://localhost:8000/ar/dashboard/shop/dashboard-shop http://localhost:8000/fa/dashboard/shop/dashboard-shop http://localhost:8000/en/dashboard/shop/dashboard-店铺

    Route::namespace('Dashboard')->prefix('{locale}/dashboard')-

>middleware('auth')->group(function ($locale) {
        .
        .
        .
        .
        .
    }

但它没有得到 $locate 作为字符串“en”或“fa”它给了我这个对象

Illuminate\Routing\Router {#26 ▼
  #events: Illuminate\Events\Dispatcher {#27 ▶}
  #container: Illuminate\Foundation\Application {#2 ▶}
  #routes: Illuminate\Routing\RouteCollection {#29 ▶}
  #current: null
  #currentRequest: null
  #middleware: array:9 [▶]
  #middlewareGroups: array:2 [▶]
  +middlewarePriority: array:6 [▶]
  #binders: []
  #patterns: []
  #groupStack: array:2 [▶]
}

标签: phplaravellocalization

解决方案


参数不会传递给group回调函数。被Router传入:

->group(function ($router) { ... });

因此,Router如果您愿意,您可以通过闭包内的对象直接调用 来定义您的路线。

如果要获取路由参数,则必须在路由匹配并通过管道调度之后在中间件或控制器中执行此操作。在定义路由(您的路由文件)时,还没有发送任何内容,这些只是定义。

所有这些都是在路由匹配和分派之前运行的,因此此时没有参数。

您应该制作一个中间件,从请求的路由参数中获取语言环境并根据需要进行分配。


推荐阅读