Php 基于区域设置的Laravel动态路由

Php 基于区域设置的Laravel动态路由,php,laravel,Php,Laravel,因此,基于区域设置,我的数据库中有多个slug。现在,我还想根据区域设置显示正确的路线,如下所示: {{ route(__('categories.edit'), [$category->slug]) }} 但是在我的数据库中,我有三个slug字段,slug\u en,slug\u es和slug\u nl 简单的问题是,如何根据区域设置显示正确的路线?我尝试了以下方法: {{ route(__('categories.edit'), [$category->slug_ . app

因此,基于区域设置,我的数据库中有多个slug。现在,我还想根据区域设置显示正确的路线,如下所示:

{{ route(__('categories.edit'), [$category->slug]) }}
但是在我的数据库中,我有三个slug字段,
slug\u en
slug\u es
slug\u nl

简单的问题是,如何根据区域设置显示正确的路线?我尝试了以下方法:

{{ route(__('categories.edit'), [$category->slug_ . app()->getLocale()]) }}
但这不起作用,它只在slug中显示区域设置,因此如果区域设置设置为
en
,则URL如下所示:

http://example.com/categories/en/edit
虽然它应该是:

http://example.com/categories/correct-slug-here/edit
我知道这部分路线是错误的:

$category->slug_ . app()->getLocale()

但在搜索了几个小时后,我不知道如何正确地修复这个问题。我也知道这应该是一个简单的解决方案,希望有人能帮我解决这个问题。

您需要在引号中添加下划线,并将列名括在方括号中,因为它是一个动态字符串

{{ route(__('categories.edit'), [$category['slug_' . app()->getLocale()]]) }}
或者使用花括号

{{ route(__('categories.edit'), [$category->{'slug_' . app()->getLocale()}]) }}

您需要在引号中添加下划线,并将列名括在方括号中,因为它是一个动态字符串

{{ route(__('categories.edit'), [$category['slug_' . app()->getLocale()]]) }}
或者使用花括号

{{ route(__('categories.edit'), [$category->{'slug_' . app()->getLocale()}]) }}

您在这里使用的是两个值之间的连接运算符:
$category->slug
app()->getLocale()

第二个值返回区域设置,并显示在路线中,但是我假设您的类别没有
slug\uu
属性,您尝试连接的不是字符串,您应该使用获取属性的其他语法:

 {{ route(__('categories.edit'), ['slug' => $category['slug_' . app()->getLocale()]]) }}

您在这里使用的是两个值之间的连接运算符:
$category->slug
app()->getLocale()

第二个值返回区域设置,并显示在路线中,但是我假设您的类别没有
slug\uu
属性,您尝试连接的不是字符串,您应该使用获取属性的其他语法:

 {{ route(__('categories.edit'), ['slug' => $category['slug_' . app()->getLocale()]]) }}

谢谢,尝试了这个,但是得到了错误“Array to string conversion”@Hardist这是因为route函数的第二个参数应该是一个包含路由参数的数组,我们使用的语法不正确我没有注意到这一点,我已经编辑了我的答案(使用路由接受的参数名称替换slug键)谢谢,尝试了此操作,但出现错误“数组到字符串转换”@这是因为route函数的第二个参数应该是一个数组,包括route的参数,我们使用的语法不正确我没有注意到这一点,我编辑了我的答案(用route接受的参数名称替换slug键)