我试图通过自定义验证类来验证输入并显示自定义消息。定期验证是可以的。但是我想在我的验证类中添加一个以上的条件。让我举个例子。
让我们尝试验证电话号码。我希望输入电话号码的条件是,
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"
]
}