Передать параметр в middleware Laravel

88
20 января 2022, 11:50

Знаю что можно передавать параметры так:

...->middleware('name:param')

Но как передать параметр из ссылки?

/objects/edit/{object}

Вот мне этот {object} и нужно кинуть в мидлваре. В методе, этот параметр - экземпляр класса. Посути один об'экт из всема вытекающими.

Answer 1
class Middleware
{
    public function handle($request, Closure $next)
    {
        // если у вас роутер отдает object как id (строку)
        $objectId = $request->route('object'));
        $object = Object::find($objectId);
        // если у вас роутер отдает object как объект 
        $object = $request->route('object'));
        $response = $next($request);
        return $response;
    }
}

Если у вас роутер отдает строку, а вам хочется сразу объект - можно забиндить самому.

https://laravel.com/docs/6.x/routing#route-model-binding

Так же биндинг происходит за счет того, что Object должен быть указан в качестве параметра метода контроллера, иначе биндинг DI контейнера не сработает.

class ObjectController()
{
    public function method(Object $object){
       //
   } 
}
READ ALSO
Laravel Broadcasting не возвращает результатов

Laravel Broadcasting не возвращает результатов

Пытаюсь создать real-time уведомления используя Laravel Echo и Pusher, но не получаю никаких результатовПользуюсь своим authentication middleware-ом, поэтому изменил...

70
Не сохраняются сессии в Laravel

Не сохраняются сессии в Laravel

Раньше было все отлично и все работалоВчера заметил, что не показываются ошибки формы

61
SQLITE. Выбор 10 ближайших значений к заданному

SQLITE. Выбор 10 ближайших значений к заданному

В таблице пользователи есть колонка возрастМне нужно получить 10 ближайших значений к этому возрасту (в любом направлении, как старше, так...

84
Проблема при установке MySQL Server 8.0

Проблема при установке MySQL Server 8.0

Кто-нибудь знает в чем может быть дело? При установке MySQL Installer Community на этапе конфигурации просит ввести старый пароль root Current Root PasswordЯ не помню...

155