首页 > 解决方案 > 如何根据用户在 Laravel 6 中选择的“国家”更改所有刀片并获取产品

问题描述

我需要在主页中选择国家,并在所有站点中仅显示该国家的产品和城市

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);
}    

标签: phplaravele-commercelaravel-middleware

解决方案


推荐阅读