2015-09-20 89 views
1

我目前的網站網址是www.mysite.com,我希望創建一個多區域網站,例如www.mysite.com/in ,多個國家的www.mysite.com/eu等。Laravel 5:將當前網站移至多區域網站(/ in,/ eu等)

我使用幼蟲5.1,我知道route :: group方法來做到這一點。

但我的代碼在整個網站上都使用了引用url(例如/ home,/ about-us),我希望將其更改爲/ in/home,/ in/about-us等,而無需對網站網址進行硬編碼在每個視圖或帶有url國家段的js文件中。

有沒有辦法強制所有鏈接遍歷國家段?

+0

我刪除我的回答對'base'標籤,因爲我意識到這只是相對的URL,而不是絕對的那些工作,所以它似乎並不像一個解決這個問題的畢竟。您可以使用子域名(如eu.mysite.com),並且絕對鏈接可以正常工作,但確實使用了與您所介紹的不同的url方案,並且需要不同的DNS和服務器設置。 –

回答

0

一種好的方法可能是將一條獲取目標語言的路線與本地化的中間件相結合,以便設置本地化(如果它支持) - 例如LocalizationMiddleware。

如果您明確地在路由中定義它,您可以跳過中間件。

Route::get("{locale}/home", function($locale) { 
      App::setLocale($locale); 
      // Define your route here 
}); 

中間件是Laravel 5的新「過濾器」,您必須對其進行嚴格定義。您可以創建一個新的有:

php artisan make:middleware LocalizationMiddleware 

然後,您可以在app/HTTP /中間件/ LocalizationMiddleware.php找到它,你可以設置手柄()方法中的語言環境。

然後,在您的路線中,您將刪除區域設置代碼並指定它需要使用您的中間件。

Route::get("{locale}/home", 
      ["middleware" => "LocalizationMiddleware", function($locale) { 
      // Define your route here 
}]);