параметр в роуте, указал аннотацию в контроллере. Какие то ещё телодвижения нужно совершить? Может у меня фреймворк старый? Версия третья
Там не достаточно гидратора. Попозже распишу как сделать
Гидратор поддерживает атрибуты, позволяющий из разных мест доставать значения, которые могут использоваться для наполнения свойств в гидрируемых объектах. Из коробки будут предоставляться только те атрибуты, которые не требуют дополнительных зависимостей. Вот тут они лежат. Временно до релиза в пакете гидратора также лежит атрибут RouteArgument, достающий значения аргументов из роута. Перед релизом гидратора он будет перемещён в пакет Yii Router. В пакете Yii Input HTTP лежат дополнительные атрибуты, которые достают различные значения из запроса, вот они. За наполнение параметров экшена контроллера отвечает диспетчер мидлварей, который можно расширить так, чтобы он обрабатывал и атрибуты гидратора. Вот по шагам настройка: 1) Проверяем, что версия yiisoft/middleware-dispatcher в приложении не ниже 5.1. Если ниже - обновить. 2) Ставим yiisoft/hydrator и yiisoft/input-http. 3) В контейнер добавляем конфигурацию, указывающую гидратору работать с контейнером. Пример в демо. 4) Чтобы работали атрибуты, достающий значения из объекта запроса нужно этот запрос "поймать". Это можно сделать одним из двух способов: - Использовать резолвер атрибутов гидратора RequestCatcherParametersResolver для диспетчера мидлварей. - Добавить мидлварь RequestCatcherMiddleware в набор мидлварей. Я реализовывал в демо первый вариант. 5) Конфигурируем диспетчер мидлварей таким образом, чтобы он обрабатывал атрибуты гидратора, для этого нужно использовать HydratorAttributeParametersResolver из Yii Input HTTP. Шаги 4 и 5 - Пример в демо.
Обсуждают сегодня