Laravel Global Middleware для установки значения страны не удалось в своей логике - PullRequest
0 голосов
/ 14 декабря 2018

Я работаю над глобальным промежуточным программным обеспечением Laravel для установки значения страны в файле cookie, когда веб-посетители получают доступ к веб-сайту.

По этой причине я создаю следующую функцию:

public function handle($request, Closure $next)
{
    if(!$request->cookies->has('geo'))
    {
        if (!$request->cookies->has('geo') && GeoIP()->getLocation()->iso_code !== null) {
            //find customer IP location
            $code = strtolower(GeoIP()->getLocation()->iso_code);
            // creates a cookie with iso_code value
            $cookie = cookie('geo', $code, 600);
            //move to page
            return $next($request)->cookie($cookie);
        }
        else{
            return response()->view('static.select-country');
            //move to page
            return $next($request);
        }
    }
    if ($request->cookies->has('geo')) {
        //move to page
        return $next($request);
    }
}

1-Если cookie 'geo' имеет значение NULL:

  • Первое: cookie 'Geo' имеет значение NULL, а детектор Torann GeoIp не равен NULL -> создать cookie со страной ISO_CODE
  • Else (geo cookieимеет значение null && GeoIP детектор имеет значение null) -> перейдите на страницу select-country.phtml, чтобы выбрать свою страну и установить cookie вручную.

2 - Если cookie geo не является нулевым кодом: ($ request-> cookies-> has ('geo'))

  • У посетителя уже есть cookie -> перейти на страницу.

(моя идея для шага 2для существующих клиентов, у которых уже есть страна (уже есть файл cookie с этим значением), но они хотят вручную изменить страну в представлении static.select-country и избежать переопределения детектора GeoIP с помощью цикла 1.)

Моя проблема: в этот момент, когда клиент выбирает вручную в static.seПри просмотре лекционной страны он перемещается на домашнюю страницу:

  • Но приложение назначает cookie с помощью детектора GeoIP вместо того, чтобы учитывать выбранную вручную страну (cookie, созданную в static.select-country) клиентом.

1 Ответ

0 голосов
/ 14 декабря 2018

Вы можете создать маршрут для этой страницы выбора страны и игнорировать этот маршрут в промежуточном программном обеспечении выше.тогда каждый может посетить эту страницу и выбрать свою страну из списка и установить этот код страны в cookie.

if ($request->is('YOUR_ROUTE_PATH')) {
   return $next($request);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...