无法在自定义帮助文件中获取会话数据-Laravel 5.8

时间:2019-08-21 09:46:13

标签: php laravel

实际上,我正在尝试从会话中定义一个常量并设置值 在使用Helper Service Provider添加的自定义帮助程序中。但是无法在此处获取会话数据。

我已经使用Helper Service Provider添加了Helper,它工作正常。 但是尝试获取会话值。

HelperServiceProvider.php

public function register()
{ 
    foreach (glob(app_path().'/Helpers/*.php') as $filename){
        require_once($filename);
    }
}

然后在App / Helpers文件夹的 ERPHelper.php 中,我试图获取会话数据。但没有获得会话值。

$ company =会话('company');

1 个答案:

答案 0 :(得分:0)

这通常取决于中间件。如果要在company中间件下设置web会话值,则可能无法在服务提供商注册的帮助程序函数中检索到该值。

此外,出于兴趣,您为什么将其设置为常数?使用会话帮助程序检索值然后将其设置为常量对我来说似乎很奇怪。常量可能不应该以这种方式使用,但是您还要添加额外的抽象层。为什么不在需要时直接致电session('company')

我通过Bootstrap.php部分中的composer.json文件加载了辅助程序autoload

 "autoload": {
    "files": [
      "app/Helpers/Bootstrap.php"
    ],
    "psr-4": {
      "App\\": "app/"
    },
    "classmap": [
      "database"
    ]
 },

然后在Bootstrap.php中运行glob来加载相关文件。

也就是说,这可能仍然无济于事,因为您不在Web中间件之列。您不能将会话值传递给您的辅助函数吗?

// Helper function.
function myErpHelper($companySessionValue) {
    // My code here...
}

// Calling the helper function.
myErpHelper(session('company'));