Как вернуть сообщение условной проверки из одного правила в Laravel - PullRequest
0 голосов
/ 27 октября 2019

Я пытаюсь проверить ввод и показать пользовательское сообщение с помощью пользовательского класса проверки. Регулярная проверка в порядке. Но я хотел бы добавить более одного условия в мой класс проверки. Позвольте мне показать пример.
Давайте я попытаюсь подтвердить номер телефона. Мои условия для ввода телефонного номера следующие:
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"
    ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...