我有3个域指向同一个 Laravel 应用程序。我想要的是每个人连接到自己的数据库并根据TLD加载自己的语言文件。我可以在哪里设置这些设置的文件?我可以直接在配置文件中执行此操作,也可以在加载配置之前执行某些操作。
我所拥有的是一个简短的功能,它将解析域并获得TLD,在快速验证之后,我们将知道将使用哪种数据库和语言。
答案 0 :(得分: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);
}