Я пытаюсь проверить ввод и показать пользовательское сообщение с помощью пользовательского класса проверки. Регулярная проверка в порядке. Но я хотел бы добавить более одного условия в мой класс проверки. Позвольте мне показать пример.
Давайте я попытаюсь подтвердить номер телефона. Мои условия для ввода телефонного номера следующие:
1. минимальная длина ввода 3
2. Минимальная длина ввода 12
3. вход должен быть числовым.
Для этогопожалуйста, проверьте мой текущий код в первую очередь.
В моем AppServiceProvider.php
use Illuminate\Support\Facades\Validator;
use App\Validators\MyValidator;
public function boot()
{
Schema::defaultStringLength(191);
Validator::resolver(function($translator, $data, $rules, $messages) {
return new MyValidator($translator, $data, $rules, $messages);
});
}
В моем MyValidator.php
public function validatePhone($attributes, $value, $parameters){
$phone = str_replace("-","",$value);
if(!is_numeric($phone)){
return false;
}
if(isset($parameters[0]) && !empty($parameters[0])){
$length = $parameters[0];
if(strlen($phone) < $length){
return false;
}
}
if(isset($parameters[1]) && !empty($parameters[1])){
$length = $parameters[1];
if(strlen($phone) > $length){
return false;
}
}
return true;
}
В моем FormController.php
public function save(Request $request){
$validator = Validator::make($request->all(),[
"phone" => "phone:3,12"
]);
if($validator->fails()){
return $validator->errors();
}
return "Passed";
}
Еслиошибка проверки происходит, ответ будет таким.
{
"phone":["validation.phone"]
}
Тогда я могу написать только одно пользовательское сообщение для телефона. Что-то вроде «Пожалуйста, введите номер телефона правильно».
Но я хотел бы написать три сообщения для проверки телефона из-за условия, когда произошла ошибка. Например,
1. если длина меньше 3, «Пожалуйста, введите номер телефона не менее 3 цифр».
2. если длина больше 12, «Пожалуйста, введите номер телефона не более 12 цифр».
3. Если номер телефона содержит буквы алфавита, «Пожалуйста, введите номера только номера телефона».
Как я могу это сделать?
Если ответ может вернуть что-то подобное, это тоже нормально.
{
"phone":[
"validation.phone.min"
]
}