2016-01-05 51 views
4

我有3個域指向相同的Laravel應用程序。我希望每個人都能連接到自己的數據庫,並根據TLD加載自己的語言文件。什麼是我可以設置這些設置的文件?我可以直接在配置文件中執行它,也可以在加載配置之前執行一些事件。在Laravel中動態設置數據庫連接和語言

我所擁有的是一個簡短的函數,它將解析域並獲得頂級域名(TLD),在快速驗證之後,我們將知道將使用哪種數據庫和語言。

回答

6

您可以輕鬆地做到這一點與中間件 - 在這裏看到一些文檔:https://laravel.com/docs/master/middleware

你需要將所有的請求都執行控制器之前運行的中間件。該中間件應該配置基於域的應用程序語言環境和連接,然後執行請求。類似於以下邏輯的東西應該這樣做:

public function handle($request, Closure $next) 
{ 
    $host = $request->getHost(); 

    //do your logic that determines the language and connection to use based on TLD 
    $language = $this->getLanguageForTld($host); 

    //set connection used 
    Config::set('database.default', $language); 

    //set application locale 
    App::setLocale($language); 

    return $next($request); 
} 
+1

在Laravel 5中確保使用'\ Config'和'\ App' – ali