@marisa
В Laravel, данные могут быть переданы из middleware в контроллер несколькими способами:
Можно добавить свойство в объект запроса в middleware и получить доступ к нему в контроллере через метод $request->get('property_name')
. Например:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// Middleware public function handle($request, Closure $next) { $request->merge(['user_id' => auth()->id()]); return $next($request); } // Controller public function index(Request $request) { $user_id = $request->get('user_id'); //... } |
Можно также передавать данные из middleware в контроллер через атрибут контроллера. Например:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
// Middleware public function handle($request, Closure $next) { $user_id = auth()->id(); app()->make('AppHttpControllersMyController')->userId = $user_id; return $next($request); } // Controller class MyController extends Controller { public $userId; public function index() { $user_id = $this->userId; //... } } |
Можно вызвать метод контроллера из middleware и передать ему данные. Например:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
// Middleware public function handle($request, Closure $next) { $user_id = auth()->id(); app()->make('AppHttpControllersMyController')->setUserId($user_id); return $next($request); } // Controller class MyController extends Controller { public $userId; public function setUserId($userId) { $this->userId = $userId; } public function index() { $user_id = $this->userId; //... } } |
Какой из этих способов выбрать, зависит от конкретной ситуации и предпочтений разработчика.