Я использую laravel 5.1. У меня есть элемент формы summernotejs. Я успешно создал правило пользовательской проверки, которое берет HTML, предоставленный из ввода формы, разбивает теги и вызывает вызов strlen()
в текстовом контенте. Поэтому я могу видеть длину сообщения без каких-либо тэгов.
Это мое правило проверки:
Validator::extend('strip_min', function ($attribute, $value, $parameters, $validator) { return strlen(strip_tags($value)) >= $parameters[0]; });
Я вызываю правило валидации, указывая: strip_min:10
или strip_min:20
т. Д., strip_min:20
число является минимальной длиной строки после снятия тегов.
Я хочу добавить специальное сообщение, говоря, что длина контента должна быть как минимум n
символов.
Документация Laravel по этому аспекту бесполезна. Я открыл файл validation.php
, содержащий все сообщения об ошибках.
Я добавил ключ strip_min
в массив сообщений с сообщением The :attribute must be at least :min characters.
strip_min
The :attribute must be at least :min characters.
Когда я тестирую его, я получаю сообщение об ошибке:
The notice must be at least :min characters.
Как я могу преобразовать :min
в число, указанное в правиле проверки ?! Я прочитал документацию, но это повсюду, и я не могу понять, как просто заменить: min с данным номером.
Выяснил.
Validator::extend('strip_min', function ($attribute, $value, $parameters, $validator) { $validator->addReplacer('strip_min', function($message, $attribute, $rule, $parameters){ return str_replace([':min'], $parameters, $message); }); return strlen(strip_tags($value)) >= $parameters[0]; });
Используйте это в файле validation.php
'strip_min' => 'The :attribute must be at least :strip_min characters.'