我是i18n我的网站的路由,我想要一个包含语言短代码的url结构,我希望路由在没有短代码的情况下工作(默认为英语)Laravel/php函数变量错误交替
我想实现mysite.com/articles/1/some-post-title
(默认为英语),然后 mysite.com/fr/articles/1/some-post-title
(选择适当的语言,在这种情况下,法国)
我有两个途径一个没有语言环境变量,另一种没有局部变量。这两条路线都指向相同功能
在情况1
其中的语言环境变量不存在我的代码,而不是从所述$locale
变量(其被认为是空)的路由分配的id值,则$title
变量分配给$id
使代码返回错误的结果。
Route::get('/articles/{id}/{title}', function($locale=null,$id=null, $title=null){
return $locale.'<br>'.$id.'<br>'.$title;
});
在案例2中
正确的顺序之后,因为所有这三个变量都存在
Route::get('/{locale}/articles/{id}/{title}',function($locale=null,$id=null, $title=null){
return $locale.'<br>'.$id.'<br>'.$title;
});
另一个担心
即使在情况下,两个代码将胡作非为如果我改变了变量的顺序,也许把局部放在最后,尽管我不确定php如何处理这个问题,但我不认为命令是因为这些变量具有唯一的名称。 我知道我可以将路线指向两种不同的功能作为可能的解决方案,但这只是重复代码。 在此先感谢您的帮助。
我认为'null'是一个状态,而不是一个值。作为一种价值,它往往运输不好。 'foo.com // a' vs'foo.com/0/a'。不知道我完全明白这个问题,但基本上是发生了什么? – ficuscr
@ficuscr在这种情况下,空值是在函数中分配的,而不是在路径的层次上。 –
@ficuscr第一条路线是完全无效的区域设置变量,所以空值不会导致“//” –