Size: a a a

2020 June 28

RT

Roman Tsurkanu in Yii Framework 3
Dmitriy S
Ну, это понятно. Но там плохой вариант из-за разброса логики, хотя сама идея валидации  в стеке мидлтварей роута норм.
есть вариант оформить по аналогии с form model - request model.

Ну то есть мидлваре нужно будет передать экземпляр class LoginRequest extends RequestModel.
источник

RT

Roman Tsurkanu in Yii Framework 3
и еще вопрос применимости - это будет актуально только для rest или не только.
источник

RT

Roman Tsurkanu in Yii Framework 3
или вообще нигде не актуально
источник

RT

Roman Tsurkanu in Yii Framework 3
по поводу отдачи ошибок - по идее решаемо, можно будет дать пользователю самому определить формат ошибки
источник

RT

Roman Tsurkanu in Yii Framework 3
в классе условного LoginRequest
источник

DS

Dmitriy S in Yii Framework 3
Roman Tsurkanu
и еще вопрос применимости - это будет актуально только для rest или не только.
Такая валидация проще реализуется без этой мидлтвари. Актуально может кроме rest для ajax валидации на клиенте.
источник

RT

Roman Tsurkanu in Yii Framework 3
мидлвара вроде логично - ты говоришь что вот в этом роуте, реквест должен соответствовать этой модели
источник

RT

Roman Tsurkanu in Yii Framework 3
хотя...
источник

AM

Alexander Makarov in Yii Framework 3
Dmitriy S
Такая валидация проще реализуется без этой мидлтвари. Актуально может кроме rest для ajax валидации на клиенте.
Прям в хендлере?
источник

DS

Dmitriy S in Yii Framework 3
В контроллере делаешт метод rules ($routeName) и метод validate(), добавляешь мидлтварь [BlogController::class, 'validate'] в группу роутов контроллера, в методе validate() определяешь роут, берешь по нему правила и создаешь валидатор.
источник

DS

Dmitriy S in Yii Framework 3
Выходит, что правила в контроллере, что логично, мидлтварь может как отдать ошибки, так и сохранить их в свойстве контроллера и пропустить запрос дальше, а в экшине мы уже просто проверяем свойство.
источник

AM

Alexander Makarov in Yii Framework 3
ну, это фактически руками
источник

RT

Roman Tsurkanu in Yii Framework 3
Dmitriy S
Выходит, что правила в контроллере, что логично, мидлтварь может как отдать ошибки, так и сохранить их в свойстве контроллера и пропустить запрос дальше, а в экшине мы уже просто проверяем свойство.
правила должны быть в валидаторе, а не контроллере на мой взгляд, в этом вроде и весь смысл - не писать в контроллере логику валидации, а рбоать сразу с валидными данными.
источник

DS

Dmitriy S in Yii Framework 3
Alexander Makarov
ну, это фактически руками
Ну а так у тебя тоже руками, только на каждый экшин создать по валидатору.
источник

RT

Roman Tsurkanu in Yii Framework 3
у меня было много кейсов когда валидаторы для запросов часто переиспользовались - особенно касалось всяких пагинаций и таких повторяющихся штук
источник

DS

Dmitriy S in Yii Framework 3
Roman Tsurkanu
правила должны быть в валидаторе, а не контроллере на мой взгляд, в этом вроде и весь смысл - не писать в контроллере логику валидации, а рбоать сразу с валидными данными.
Да, можно вынести, но валидатор должен быть для контроллера, а не для экшина
источник

RT

Roman Tsurkanu in Yii Framework 3
Dmitriy S
Да, можно вынести, но валидатор должен быть для контроллера, а не для экшина
почему? 1 контррллер, 3 экшена, 3 валидатора
источник

AM

Alexander Makarov in Yii Framework 3
Dmitriy S
Да, можно вынести, но валидатор должен быть для контроллера, а не для экшина
Так хендлер может быть и не контроллер.
источник

AM

Alexander Makarov in Yii Framework 3
Это мы их просто собираем в один класс... ну потому что так привыкли.
источник

AM

Alexander Makarov in Yii Framework 3
А технически это не обязательно.
источник