Php 如何在laravel的服务提供商中检索会话数据?

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)); } 但会话值始终为空。我在网上看到了很多文章。但他们没有工

我正在开发一个Laravel项目。我使用的是Laravel5.1。在我的项目中,我以这种方式将数据共享给
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-你能给出你的答案吗?我需要同样的,非常感谢!!我不同意“应该”部分。我更喜欢“可以”。例如,您可能需要根据用户的区域设置创建路由。我不明白如何通过事件或中间工具来实现这一点。