我是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第一條路線是完全無效的區域設置變量,所以空值不會導致「//」 –