Я использую промежуточное программное обеспечение для моего контроллера ресурсов, и в этом промежуточном программном обеспечении я устанавливаю некоторые глобальные переменные. Теперь я хочу получить доступ к этим переменным в конструкторе моего контроллера, но я получаю нулевое значение, когда пытаюсь получить доступ к этим переменным в конструкторе, в то время как я получаю не нулевое значение, если я получаю доступ к ним в любом другом методе этого контроллера. Я использую Laravel 5.6. Ниже приводится его код.
Контроллер:
class PhaseController extends ApiController
{
public function __construct(Request $request)
{
parent::__construct();
$this->middleware('myMiddleware');
$myVar = $request->myVar;
}
}
Middleware:
class myMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$explodedPath = explode("/",$request->path());
$request["myVar1"] = $explodedPath[5];
//Code here
return $next($request);
}
}
Это происходит потому, что объект запроса получен до вызова промежуточного программного обеспечения, так что даже когда я изменяю объект запроса в промежуточном программном обеспечении, Constructor все еще использует старое состояние объекта запроса. Здесь мне нужно обновить объект запроса, чтобы получить его новое состояние. Но я не знаю как.
Заранее спасибо.