如何在Laravel Controller上设置全局变量?

时间:2020-07-28 22:49:22

标签: laravel model-view-controller controller

所有人。

控制器上的每个功能,我都使用相同的变量。

public function store(Request $request) 
{
   $user = auth()->user();
   $user_name = $user->name;
   $user_id = $user->id;
   $init_pdf = url('/') . '/images/' . 'upload/' . $user_name . '/' . $name;
   ...
}

public function signedPdf(request $request) 
{
   $user = auth()->user();
   $user_name = $user->name;
   $user_id = $user->id;
   $name = $user_name . $user_id . '.' . $file->extension();
   ...
}

我想为通用变量设置全局变量。

如何设置?

谢谢

1 个答案:

答案 0 :(得分:1)

通常,您可以直接在构造函数中进行设置,但是Controllers在中间件方面存在问题。在请求通过中间件堆栈之前,已解析控制器。这意味着您通常将没有会话或身份验证之类的功能。您可能想在Controller的构造函数中使用基于闭包的中间件来设置此值:

protected $user;

public function __construct()
{
    $this->middleware(function ($request, $next) {
        $this->user = $request->user();

        // also can set other variables here as well

        // let the request continue through the stack
        return $next($request);
    });
}

然后,您应该可以在方法中访问$this->user

另一个答案:Assign user values for whole controller in laravel

基本上是重复的。