В Laravel 5 использование запроса формы в качестве шлюза проверки и приведенный ниже код:
Контроллер
public function decline(Request $request, InviteDeclineRequest $validation, $id)
{
$invite = Invite::find($id);
$invite->status = 'declined';
$invite->save();
}
FormRequest
class InviteDeclineRequest extends Request {
public function rules()
{
return [
# this is referring to the incoming data,
# not the existing data
'status': 'pending',
];
}
}
Как я могу изменить приведенный выше набор правил проверки, чтобы сказать, что входящий ввод действителен только в том случае, если статус существующей записи установлен на «ожидает». То есть не разрешать отклоненное приглашение, если уже существующее не ожидает рассмотрения.
Вариант 1. Поместите эту логику в контроллер. Возможно, приведенное выше не считается частью проверки (хотя я бы сказал, что это так), и поэтому не относится к FormRequest.
Вариант 2. Поместите логику в метод авторизации метода FormRequest. Единственным недостатком этого является то, что авторизация должна быть для управления доступом, а не для проверки данных.
Вариант 3. Расширьте запрос формы, включив в него третий метод, который проверяет как существующие, так и входящие данные. Немного болезненно, так как мне нужно убедиться, что он вызывается как часть цикла запроса.
Вариант 4: добавьте настраиваемое правило проверки: http://laravel.com/docs/5.0/validation#custom-validation-rules