Php 基于区域设置的Laravel动态路由
因此,基于区域设置,我的数据库中有多个slug。现在,我还想根据区域设置显示正确的路线,如下所示: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
{{ 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键)