Hello, I have such a question. Can I transfer a variable from Middleware to Controller?
1 answer
In laravel 5.x, you can use $request->merge to add parameters to Rquest, or change the existing $request->replace(array('inputname' => 'new value')); .
If you are trying to do this in Middleware, you should remember that there are two types of them.
1. Your option is Before Middleware։
public function handle($request, Closure $next) { //.... $request->merge(array("input_name" => "input_value")); return $next($request); } And in the controller:
public function index(Request $request) { // ... $my_var1 = $request->input('input_name'); // Так тоже можно получить добавленное значение $my_var2 = Request::instance()->query('input_name'); // ... } 2. After Middleware will perform its task after processing the Request:
public function handle(Request $request, Closure $next) { $response = $next($request); // Request обрабатывается до этой строчки. // Поэтому делать что либо с Request уже бессмысленно $request->merge(array("input_name" => "input_value")); return $response; } - Thanks for the answer, you helped me a lot - Sos Ghazaryan
|