我正在尝试使用以下命令与所有视图共享会话值AppServiceProvider
class.
In the boot()
函数我说:view()->share('key', Session::get('key'));
但是,值是null
。可能是什么问题?在控制器中我设置它,它工作正常。即使删除后Session::put()
行,该值仍然在会话中(显然)。
在 Laravel 中,会话是在由此类处理的中间件中初始化的:
\Illuminate\Session\Middleware\StartSession::class
当服务提供者启动时,这个中间件还没有被执行,因为所有中间件在服务提供者启动阶段后执行
因此,您可以创建一个中间件并从那里共享会话变量,而不是从服务提供商共享变量,或者您可以在服务提供商中使用带有回调的视图编辑器:
public function boot()
{
view()->composer('*', function ($view)
{
//this code will be executed when the view is composed, so session will be available
$view->with('key', \Session::get('key') );
});
}
这将起作用,因为当中间件已经执行时,回调将在视图组成之前被调用,因此会话将可用
一般来说,请注意中间件的执行顺序:如果您想从中间件访问会话,则应该在 Laravel 的之后执行StartSession::class
中间件
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)