Столкнулся с интересно задачей — валидировать разделенные запятой значения. Comma-separated данные приходят в одном поле — поискав варианты решения нашел оптимальное, о котором и хочу рассказать.
В классе Request и всех его потомках есть интересный метод merge.
Этот метод позволяет изменить полученные данные. Например, до валидации.
К примеру, в ситуации, когда Вам приходит список id, разделенных запятой, которые надо проверить на наличие в какой-то таблице Вы можете до валидации поступить так:
$request->merge([
'employees' => explode(',', $this->get('employees'))
]);
При этом в правилах валидации уже подразумевать, что мы получили массив, так как explode возвращает именно его. Пример правил валидации для указанных выше условий:
'employees.*' => [
'exists:employees,id'
],
Также, если Вы используете отдельный класс-Request — очень удобно использовать метод prepareForValidation. Он будет вызван до непосредственно проверки данных и merge можно провести в нём. Это будет иметь такой вид:
/**
* @inheritDoc
*/
protected function prepareForValidation()
{
$this->merge([
'employees' => explode(',', $this->get('employees'))
]);
}
Надеюсь статья была полезной для Вас. Если остались вопросы — го в комменты)
Один комментарий на «“Laravel. Как изменить данные запроса перед валидацией?”»
I need to to thank you for this good read!! I certainly loved every bit of it. I have you bookmarked to check out new stuff you postÖ