Laravel使用子域

时间:2016-04-25 17:00:49

标签: php laravel

我有一个laravel项目,我必须更改语言系统,但它应该是子域名。

例如:

http://en.site.com/portal

http://de.site.com/portal

我使用此命令获取语言文本,如" trans(" home.title")"我也有一个中间件来改变语言,如:

    if($lang = Session::get('lang')){
      Lang::setLocale($lang);
    }
   return $next($request);

我想路由以决定从子域名中使用语言。我怎样才能做到这一点?我可以这样做

Route:get("/lang/{lang}","LanguageController@change");

子域名应该如何?

谢谢你帮助我。

1 个答案:

答案 0 :(得分:1)

您只需要1个中间件,仅此而已。在Laravel中实现此目标非常简单。

<?php
namespace AppHttpMiddleware;

use Closure;
use IlluminateSupportFacadesApp;

class LangMiddleware
{
    public function handle($request, Closure $next)
    {
        $url_array = explode('.', parse_url($request->url(), PHP_URL_HOST));
        $subdomain = $url_array[0];

        $languages = ['en', 'de'];

        if (in_array($subdomain, $languages)) {
            App::setLocale($subdomain);
        }

        return $next($request);
    }
}

然后将中间件添加到Kernel.php

确保在资源/语言中具有用于子域的文件夹

我在这里找到了解决方法:https://kovah.me/en/laravel-5-localization-based-on-the-subdomain/