Проверка формы Laravel, сбой, если не пуста

#php #validation #laravel

#php #проверка #laravel

Вопрос:

У меня есть поле ввода, которое должно быть пустым, иначе я хочу, чтобы проверка завершилась неудачей. Это попытка остановить спам через контактную форму.

Я просмотрел документацию для проверки, но для этого нет ничего, кроме правила «max», но это не работает.

Любые другие варианты?

Ответ №1:

Вот чистое и (вероятно) пуленепробиваемое решение:

     'mustBeEmpty'  => 'present|max:0',
  

Ответ №2:

В методе, в котором выполняется проверка, расширьте / добавьте пользовательское правило:

 Validator::extend('mustBeEmpty', function($attr, $value, $params){
    if(!empty($attr)) return false;
    return true;
});
  

Затем вы можете использовать это rule как:

 protected $rules = array(
    'emptyInputField' => 'mustBeEmpty'
);
  

Тогда все как обычно, просто используйте:

 $v = Validator::make(Input::except('_token'), $rules);
if($v->passes()) {
    // Passed, means that the emptyInputField is empty
}
  

Есть и другие способы сделать это, не расширяя его подобным образом или не расширяя Validator класс, но это простой Laravelish способ сделать это. Кстати, Github для предотвращения нежелательной почты в качестве Honeypot доступен пакет для приложений Laravel, вы можете это проверить.

Комментарии:

1. Я попробовал предложенную «Защиту от нежелательной почты», и в ней есть все, что вам нужно. 😉

Ответ №3:

Для Laravel 8.x и выше вы можете использовать prohibited правило проверки:

 return [
   'emptyInputField' => 'prohibited',
];
  

Комментарии:

1. Мне пришлось использовать 'emptyInputField' => 'nullable|prohibited', , так как в противном случае правило всегда срабатывало, даже если была отправлена пустая строка.

Ответ №4:

В laravel 5.8 вы можете использовать sometimes для добавления условных правил. 'email' => 'sometimes|email' . Эти правила будут применяться, если в поле ввода что-то присутствует.

Комментарии:

1. Это не то, о чем просил OP .. поле всегда должно быть пустым..

Ответ №5:

Вы можете использовать пустое правило. Подробности можно увидеть здесь: https://laravel.com/docs/5.2/validation#conditionally-adding-rules

Комментарии:

1. Ссылки на внешние ресурсы приветствуются, но, пожалуйста, добавьте контекст вокруг ссылки, чтобы ваши коллеги-пользователи имели некоторое представление о том, что это такое и почему оно там. Всегда указывайте наиболее релевантную часть важной ссылки на случай, если целевой сайт недоступен или постоянно отключен.