#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. Ссылки на внешние ресурсы приветствуются, но, пожалуйста, добавьте контекст вокруг ссылки, чтобы ваши коллеги-пользователи имели некоторое представление о том, что это такое и почему оно там. Всегда указывайте наиболее релевантную часть важной ссылки на случай, если целевой сайт недоступен или постоянно отключен.