php - 如何在 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 [▶]
}
解决方案
参数不会传递给group
回调函数。被Router
传入:
->group(function ($router) { ... });
因此,Router
如果您愿意,您可以通过闭包内的对象直接调用 来定义您的路线。
如果要获取路由参数,则必须在路由匹配并通过管道调度之后在中间件或控制器中执行此操作。在定义路由(您的路由文件)时,还没有发送任何内容,这些只是定义。
所有这些都是在路由匹配和分派之前运行的,因此此时没有参数。
您应该制作一个中间件,从请求的路由参数中获取语言环境并根据需要进行分配。
推荐阅读
- java - 在 java 类之间共享缓存资源
- ruby - 删除重复出现的字符串
- javascript - 严格模式。从引用的函数中提取内部定义的变量
- php - 我在数据库中有 3 个具有不同 ID 的用户,当我接受或拒绝时,它会不断获取最后一个循环的用户 ID?
- firebase - 带有 microsoft oauth 提供程序的 firebase signInWithRedirect 遇到 400 并立即重定向到原始页面
- linux - 打开电脑后,我无法进入我的 Ubuntu
- javascript - 保留引用而不修改 javascript 中的状态
- aws-lambda - 为什么来自 AWS lambda 的一些 Serilog 事件没有到达 Seq?
- c - 使用 strtok() 从双引号中提取子字符串
- ffmpeg - dyld:库未加载。即使通过 hombrew 安装,ffmpeg 也未加载,已链接