在Laravel中,如果需要会话参数,如何绑定模型实例?

时间:2019-05-31 10:54:11

标签: laravel session singleton provider

我想在AppServiceProvider的注册方法中对域模型进行单例绑定,但是我已将所选模型的ID保存在会话中,并且该信息无法在AppServiceProvider中访问。

有人知道我如何解决我的问题吗? 这是我的代码。

class AppServiceProvider extends ServiceProvider
{
    public function register()
    {
        $this->app->singleton(Domain::class, function ($app)
        {
            $request = request();

            if ($request->has('d'))
            {
                session(['domain' => $request->get('d')]);

                $domain = Domain::find($request->get('d'));
            }
            else
            {
                $domain = Domain::find(session('domain'));
            }

            return !is_null($domain) ? $domain : new Domain();
        });
    }

    public function boot()
    {
        //
    }
}

session('domain')始终为空。

谢谢

1 个答案:

答案 0 :(得分:0)

您可以在AppProvider中使用会话,因为MW直到那里才开始。如需更多帮助或其他方式,请阅读此处: https://en.cppreference.com/w/cpp/language/using_declaration Link 1

如果要在引导方法中使用会话中的变量,则应使用Link 2

public function boot()
{
    view()->composer('*', function ($view) 
    {
        $view->with('myVar', \Session::get('varFromSession') );    
    });  
}