Как заменить все лезвия и получить товар в соответствии с "страной", выбранной пользователем в Laravel 6 - PullRequest
1 голос
/ 14 июля 2020

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

Route::group(['prefix' => '{country}', 'middleware' => 'country'], function () {
    
// all site routes

}

и промежуточное ПО

public function handle($request, Closure $next)
{
    $countryShortcode = $request->route('country');
    $routeName = $request->route()->getName();
    $routeParameters = $request->route()->parameters();

    if ($request->session()->has('redirect_to_country')) {
        $redirectTo = $request->session()->get('redirect_to_country');

        if ($country === $redirectTo) {
            $request->session()->forget('redirect_to_country');
        } else {
            $routeParameters['country'] = $redirectTo;

            return redirect()->route($routeName, $routeParameters);
        }
    }

    $country = Country::where('country_shortcode', '=', $countryShortcode)->first();

    if ($country === null) {
        return redirect('/');
    }

    $request->session()->put('country', $country);
    $request->session()->save();

    return $next($request);
}    
...