【问题标题】:Laravel middleware doesn't store the session valueLaravel 中间件不存储会话值
【发布时间】:2017-08-23 22:03:51
【问题描述】:

我尝试将我的语言放在 session() 中,但是当我检查 session:dd(session()->get('locale')); - 它是空的。我不知道为什么。我需要将该值存储在会话中。

我的中间件:

class LangSwitch {
...
public function handle(Request $request, Closure $next)
        if(!session()->has('locale')){
            $locale = $request->segment(1);
            session()->put('locale', $locale);    
        }
        else{
            $locale = session()->get('locale');
        }

        if (!array_key_exists($locale, Config::get('app.locales'))) {
            $segments = $request->segments();
            $segments[0] = Config::get('app.fallback_locale');

            return redirect()->to(implode('/', $segments));
        }

        App::setlocale($locale);

        return $next($request);
    }
}

我的内核:

protected $middlewareGroups = [
    'web' => [
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\VerifyCsrfToken::class,
        \Illuminate\Routing\Middleware\SubstituteBindings::class,
        \App\Http\Middleware\LangSwitch::class,
    ],

【问题讨论】:

  • 你有没有把这个中间件分配给任何路由?
  • 当然。我为我的路线添加了 group(['middleware' => 'web']
  • 分享来自内核的protected $routeMiddleware = [ 值?
  • 受保护的 $routeMiddleware = [ 'auth' => \Illuminate\Auth\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, ' bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, 'can' => \Illuminate\Auth\Middleware\Authorize::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'mylang' => \App\Http\Middleware\LangSwitch::class, ];

标签: php laravel session laravel-5 middleware


【解决方案1】:

让我们试试这个

会有用的

\Session::save();

每当您想保存修改时,假设我想存储用户的语言

\Session::put('lang','en');
\Session::save();

【讨论】:

  • 不,这没有帮助。
猜你喜欢
  • 2019-05-02
  • 1970-01-01
  • 2017-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-22
  • 1970-01-01
  • 2017-06-06
相关资源
最近更新 更多