代码之家  ›  专栏  ›  技术社区  ›  ali

在Laravel中动态设置数据库连接和语言

  •  5
  • ali  · 技术社区  · 10 年前

    我有3个域指向同一个 拉拉维尔 应用我希望每个人都连接到自己的数据库,并根据TLD加载自己的语言文件。我可以在哪个文件中设置这些设置?我可以直接在配置文件中执行,也可以在加载配置之前的某个事件中执行。

    我所拥有的是一个简短的函数,它将解析域并获取TLD,在快速验证之后,我们将知道将使用什么数据库和语言。

    1 回复  |  直到 10 年前
        1
  •  7
  •   jedrzej.kurylo    10 年前

    您可以使用中间件轻松做到这一点-请参阅此处的一些文档: 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);
    }