Php 如何在laravel的服务提供商中检索会话数据?
我正在开发一个Laravel项目。我使用的是Laravel5.1。在我的项目中,我以这种方式将数据共享给Php 如何在laravel的服务提供商中检索会话数据?,php,laravel-5,Php,Laravel 5,我正在开发一个Laravel项目。我使用的是Laravel5.1。在我的项目中,我以这种方式将数据共享给appServiceProvider的引导方法中的所有视图 function boot() { $items = $this->itemRepo->getItems(session("key")); view()->share('items', array('items'=>$items)); } 但会话值始终为空。我在网上看到了很多文章。但他们没有工
appServiceProvider的引导方法中的所有视图
function boot()
{
$items = $this->itemRepo->getItems(session("key"));
view()->share('items', array('items'=>$items));
}
但会话值始终为空。我在网上看到了很多文章。但他们没有工作。如何将会话值传递到那里?我想你的问题在下面的帖子中得到了回答,你可以使用像Taylor Otwell中所说的中间件因为没有HTTP请求,所以没有会话
希望这有帮助。这可能是一篇旧文章,但我在这里遇到了同样的问题,所以让我在这里发布我的解决方案,以防万一有人需要它
public function boot()
{
view()->composer('*', function ($view)
{
$view->with('your_var', \Session::get('var') );
});
}
我确信这是人们仍然面临的一个问题,我想它不会很快消失,但不幸的是,有时人们似乎忘记了Laravel是基于PHP构建的,有些事情可以用简单的PHP解决
在这个问题中,如果您想使用会话,我相信请求之前已经注册了会话:
$items = $this->itemRepo->getItems(session("key"));
view()->share('items', array('items'=>$items));
密切注意
这可以通过在类似“app/helpers.php”的文件中创建一个Helper函数来实现:
"autoload": {
"psr-4": {
// definitions...
},
"files": [
"app/helpers.php"
]
},
如果您不知道如何在现代PHP开发中包含该文件,请执行以下操作:
在composer.json中:
"autoload": {
"psr-4": {
// definitions...
},
"files": [
"app/helpers.php"
]
},
然后让Compose知道你不会发疯也不会流泪:
composer dumpautoload
现在,您必须使用函数,而不是使用全局共享的变量:
共享_项()
就这样
没有魔法,也没有诡计。。。只需简单的旧PHP和现代最佳实践:D谢谢。我解决了。我刚刚创建了一个名为CommonMiddleware的新中间件,并将我的逻辑移到中间件上,共享该中间件中所有视图的数据。@WaiYanHein-你能给出你的答案吗?我需要同样的,非常感谢!!我不同意“应该”部分。我更喜欢“可以”。例如,您可能需要根据用户的区域设置创建路由。我不明白如何通过事件或中间工具来实现这一点。