@akeem
В Laravel, вы можете передавать данные из middleware в контроллер, используя объект запроса (IlluminateHttpRequest). Объект запроса содержит все данные, которые были отправлены в приложение, включая данные, которые были добавлены в middleware.
Для передачи данных из middleware в контроллер вы можете использовать метод put() или merge() объекта запроса, чтобы добавить данные в его свойство $request->attributes. Затем вы можете получить эти данные в контроллере, используя метод get() объекта запроса.
Вот пример кода middleware, который добавляет данные в объект запроса и передает их в контроллер:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php namespace AppHttpMiddleware; use Closure; class CustomMiddleware { public function handle($request, Closure $next) { // добавляем данные в объект запроса $request->attributes->put('custom_data', ['foo' => 'bar']); return $next($request); } } |
Затем в вашем контроллере вы можете получить эти данные, используя метод get():
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php namespace AppHttpControllers; use IlluminateHttpRequest; class CustomController extends Controller { public function index(Request $request) { // получаем данные из объекта запроса $customData = $request->get('custom_data'); // делаем что-то с данными ... } } |
Вы также можете использовать метод merge(), чтобы добавлять данные в объект запроса, если у вас уже есть данные в свойстве $request->attributes. В этом случае новые данные будут объединены со старыми:
1 2 |
// добавляем данные в объект запроса $request->attributes->merge(['custom_data' => ['foo' => 'bar']]); |
В контроллере вы можете получить данные, как и раньше:
1 2 |
// получаем данные из объекта запроса $customData = $request->get('custom_data'); |
@akeem
Другой способ передачи данных из middleware в контроллер в Laravel - это использование сессий. Вы можете сохранить данные в сессии в middleware, а затем получить их в контроллере. Вот пример:
В middleware:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
namespace AppHttpMiddleware; use Closure; class CustomMiddleware { public function handle($request, Closure $next) { // сохраняем данные в сессию session(['custom_data' => ['foo' => 'bar']]); return $next($request); } } |
В контроллере:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
namespace AppHttpControllers; use IlluminateHttpRequest; class CustomController extends Controller { public function index(Request $request) { // получаем данные из сессии $customData = $request->session()->get('custom_data'); // делаем что-то с данными ... } } |
Обратите внимание, что для использования сессий вы должны убедиться, что в вашем приложении настроена конфигурация сессий и добавлено соответствующее middleware.