В моем приложении 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);
}
Любые указатели будут оценены, спасибо заранее.