首页 > 解决方案 > 如何从 Laravel 中的 Session var 设置配置值

问题描述

Laravel 版本:7.6。

我试图动态设置配置。

AppServiceProvider.php,我这样放。

 public function boot()
 {
   \Config::set("variable.custom", "test"); // this worked well.
 }

但我需要从 Session var 中获取价值。

public function boot()
{
  \Session::get("test"); // returned null even used Illuminate\Support\Facades\Session.
}

所以我搜索了一下,找到了一个答案。

public function boot()
{
   view()->composer('*', function () {
      $test= \Session::get("test");   // this worked well.
      \Config::set("variable.custom", $test); // but this didn't work.
   }

}

有什么解决办法吗?谁能帮我?

这是确切的过程。

首先,我设置middleware了检查domain_id会话变量。

 public function handle($request, Closure $next)
    {
        \URL::defaults([
            'domain' => $request->route()->parameter('domain'),
        ]);
        $domain = $request->route()->parameter('domain');

        if(!Session::has('domain_id')){
            $domain = Domain::where('domain', $domain)->firstorfail();

            Session::put('domain_id', $domain->id);
        };
        $request->route()->forgetParameter('domain');

        return $next($request);
    }

AppServiceProvider.php boot()方法:

public function boot()
{
  $dir = ['/storage/'.\Session::get("domain_id")?? 0];
  \Config::set("elfinder.dir", $dir);
}

我打算elfinder.dir根据域动态设置。

标签: phplaravelsessionlaravel-5configuration

解决方案


推荐阅读