Laravel добавить параметры в URL - PullRequest
0 голосов
/ 24 сентября 2018

В моем приложении Laravel у меня есть строка запроса после каждого URL, чтобы пользователь мог выбрать несколько клиентов на нескольких вкладках в своем браузере. Я считал это в своем контроллере, чтобы выбрать правильного клиента.Так что это может выглядеть примерно так: https://url -to-my-website.com / module / page? Client_id = 1

Теперь вы можете использовать несколько языков для каждого клиента, поэтому я хочусделать так, чтобы у пользователя было это в URL.Таким образом, конечный результат будет выглядеть примерно так: https://url -to-my-website.com / module / page? Client_id = 1 & lang = ru

Я использую тот же код, что иЯ делаю для клиента, но по какой-то причине это не работает.Обе функции размещены в отдельных промежуточных программах, которые я могу вызывать на маршрутах, которые в них нуждаются.Это тот, который отлично работает для клиента:

public function handle($request, Closure $next)
{
    $url    = url()->current();
    $needle = '?client_id=';

    if ($request->get('client_id', null) === null) {
        if (mb_stripos($url, $needle) === false) {
            $lastUrl = url()->previous();

            if (mb_stripos($lastUrl, $needle) !== false) {
                $parameter = mb_substr($lastUrl, mb_stripos($lastUrl, $needle));

                $parameter = explode('&', $parameter)[0];

                $request->merge(['client_id' => mb_substr($parameter, mb_strlen($needle))]);
            } elseif (access()->getCurrentClient()) {
                $request->merge(['client_id' => access()->getCurrentClient()->client_id]);
            }
        }
    }

    return $next($request);
}

Это тот, который не работает для языка:

public function handle($request, Closure $next)
{
    $url    = url()->current();
    $needle = '&lang=';

    if ($request->get('lang', null) === null) {
        if (mb_stripos($url, $needle) === false) {
            $lastUrl = url()->previous();

            if (mb_stripos($lastUrl, $needle) !== false) {
                $parameter = mb_substr($lastUrl, mb_stripos($lastUrl, $needle));

                $parameter = explode('&', $parameter)[0];

                $request->merge(['lang' => mb_substr($parameter, mb_strlen($needle))]);
            } elseif (access()->getCurrentStoreView()) {
                $request->merge(['lang' => access()->getCurrentLanguage()->code]);
            }
        }
    }

    return $next($request);
}

Любые указатели будут оценены, спасибо заранее.

...