繁体   English   中英

如何在 Laravel 中的所有分组路由上设置定位

[英]How to set locate on all grouped routes in 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 [▶]
}

您可以简单地检索任何路由器参数

request(‘locale’)

另一种选择而不是为所有路由设置前缀,您可以通过检查 ?locale 是否存在然后更改区域设置来处理中间件的本地化

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM