структура модели:
name
value
editable
Валидатор проверяет, существует ли в БД запись со значением name равной 'smth'
Но помимо этого нужно проверить, равно ли поле 'editable' значению false
Можно объединить это условие в одно через класс Validation\Rule, получится что-то типа того
Rule::exists('user_settings')->where(function ($query) {
return $query->where('editable', true);
})
Но вопрос в том, как вывести разные сообщения о валидации юзеру, а конкретно:
1. Этого поля не существует
2. Это поле нередактируемо
Можно ли для условия задать какой-нибудь "алиас", чтобы потом можно было прикрутить к нему кастомное сообщение в массиве $messages, или может у кого есть идея как это лучше реализовать?
А разве "Это поле не существует" и "Это поле нередактируемое" - это не разные рулы?
Да, разные, дело в том, что не могу понять как их разделить. В идеале нужно два условия: первое на проверку существания, а второе when, которые будет проверять, выполнено ли предыдущее и проверять, является ли запись editable, но я из доки не понял как во when прописать условие, которое будет проверять опцию editable у найденой записи и как потом к этому when условию прикрутить кастомное сообщение, when-условий ведь может быть несколько
Сделай before валидацию
Под before-валидацией подразумевается создание своего Rule-класса?
Я не знаю что тебе нужно и как реализовано - можно же проверить сначала редактируемое или нет а потом уже отальную валидацию?
Для сложной логики проще всего использовать механизм after-хуков валидаторов: https://laravel.com/docs/8.x/validation#after-validation-hook https://laravel.com/docs/8.x/validation#adding-after-hooks-to-form-requests
Обсуждают сегодня