如何在 Laravel Controller 上设置全局变量?
How to set the global variable on Laravel 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();
...
}
我想为公共变量设置全局变量
如何设置?
谢谢
通常您可以直接在构造函数中设置内容,但控制器在中间件方面存在问题。在请求通过中间件堆栈之前解析控制器。这意味着您通常还没有可用的会话或身份验证之类的东西。您可能希望在 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
。
另一个答案:
基本上是重复的。
这个解决方案对我有用
在
app/Http/Controllers/Controller.php
导入Illuminate\Support\Facades\Auth
namespace App\Http\Controllers;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Support\Facades\Auth; <--- like this
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
protected $userId;
protected $userName;
public function __construct()
{
$this->userId = Auth::user()->id;
$this->userName = Auth::user()->name; <--- "Admin"
}
}
Now $this->userId and $this->userName is available wherever extends Controller
例如:
app/Http/Controllers/API/v1/ConfigController.php
class ConfigController extends Controller
{
public function index() {
return $this->userName; <--- "Admin"
}
大家。
控制器上的每个功能,我都使用相同的变量。
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();
...
}
我想为公共变量设置全局变量
如何设置?
谢谢
通常您可以直接在构造函数中设置内容,但控制器在中间件方面存在问题。在请求通过中间件堆栈之前解析控制器。这意味着您通常还没有可用的会话或身份验证之类的东西。您可能希望在 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
。
另一个答案:
基本上是重复的。
这个解决方案对我有用
在
app/Http/Controllers/Controller.php
导入Illuminate\Support\Facades\Auth
namespace App\Http\Controllers;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Support\Facades\Auth; <--- like this
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
protected $userId;
protected $userName;
public function __construct()
{
$this->userId = Auth::user()->id;
$this->userName = Auth::user()->name; <--- "Admin"
}
}
Now $this->userId and $this->userName is available wherever extends Controller
例如:
app/Http/Controllers/API/v1/ConfigController.php
class ConfigController extends Controller
{
public function index() {
return $this->userName; <--- "Admin"
}