首页 > 解决方案 > 在 Laravel 中获取用户 IP 地址而不安装软件包

问题描述

我的网站是三语的,我现在有一个问题,通常,该网站是波斯语的,用户首先看到波斯语网站,可以从语言更改选项更改网站的语言。如何根据访问者的 IP 更改语言?例如:波斯语用户,打开站点,查看波斯语站点,讲阿拉伯语的用户,打开站点,查看阿拉伯语站点。这是用于更改语言的方法。

控制器:

 public function index($locale) //en | fa
{

    App::setLocale($locale);
    Session()->put('local', $locale);

    return redirect()->back();

}

应用程序/配置:

'timezone' => 'Asia/Tehran',



'locale' => 'fa',

'fallback_locale' => 'fa',

下拉式菜单:

    <div class="dropdown show nav-link">
    @php $local =Session()->get('local'); @endphp
    <a class="btn dropdown-toggle " href="#" role="button" id="dropdownMenuLink" data-toggle="dropdown"
       aria-haspopup="true" aria-expanded="false">
        <img src="{{asset('images/translate/translate.png')}}" width="40px" height="40px">

        @switch($local)
            @case('fa')
            فارسی
            @break
            @case('en')
            English
            @break
            @case('ar')
            العربی
            @break
        @endswitch

    </a>

    <div class="dropdown-menu" aria-labelledby="dropdownMenuLink">
        <a class="dropdown-item text-right nav-link " href="{{route('language','fa')}}"><img
                    src="{{asset('images/translate/iran.png')}}"
                    width="30" height="30"
            >
            فارسی</a>
        <a class="dropdown-item text-right nav-link" href="{{route('language','en')}}"> <img
                    src="{{asset('images/translate/english.png')}}" width="30" height="30"
            >English</a>
        <a class="dropdown-item text-right nav-link" href="{{route('language','ar')}}"> <img
                    src="{{asset('images/translate/emarat.png')}}" width="30" height="30"
            >العربی</a>
    </div>
</div>

溃败

Route::get('lang/{locale}', 'LocalizationController@index')->name('language');

标签: phplaravel

解决方案


萨拉姆。

request()您可以从每个请求(每个路由)中可用的方法获取用户 IP 。例如在你的index方法中:

 public function index($locale) //en | fa
{
    $userIp = request()->ip();
    App::setLocale($locale);
    Session()->put('local', $locale);

    return redirect()->back();

}

推荐阅读