Laravel. Как изменить данные запроса перед валидацией?

Главная  >>  Backend  >>  Laravel. Как изменить данные запроса перед валидацией?

Столкнулся с интересно задачей — валидировать разделенные запятой значения. Comma-separated данные приходят в одном поле — поискав варианты решения нашел оптимальное, о котором и хочу рассказать.

В классе Request и всех его потомках есть интересный метод merge.

Этот метод позволяет изменить полученные данные. Например, до валидации.

К примеру, в ситуации, когда Вам приходит список id, разделенных запятой, которые надо проверить на наличие в какой-то таблице Вы можете до валидации поступить так:

При этом в правилах валидации уже подразумевать, что мы получили массив, так как explode возвращает именно его. Пример правил валидации для указанных выше условий:

Также, если Вы используете отдельный класс-Request — очень удобно использовать метод prepareForValidation. Он будет вызван до непосредственно проверки данных и merge можно провести в нём. Это будет иметь такой вид:

Надеюсь статья была полезной для Вас. Если остались вопросы — го в комменты)