标签:ESS mamicode 数据 with turn tor min 数组 eric
想实现的效果: 两个参数二选一,只存在一个返回true,同时存在或同时不存在返回false
使用方式:
$data = [
‘fid‘ => 1,
‘path‘ => ‘/全部文件/文件夹1‘
];
Validator::make($data, [
‘fid‘ => ‘bail|$without:path|numeric‘,
‘path‘ => ‘bail|$without:fid|string‘
]);
$without
是自定义规则名,$without:path
表示当 path
不存在时这条规则验证通过
在App\Providers\AppServiceProvider
文件的boot
方法里定义:
先在文件顶部引入:use Illuminate\Support\Facades\Validator;
Validator::extendImplicit(‘$without‘, function ($attribute, $value, $parameters, $validator) {
// 被排除的属性是否存在,不存在返回true
if (!isset($parameters[0])) {
return true;
}
$data = $validator->attributes(); // 待验证的属性数组
// 当前属性存在且被排除属性不存在
if (array_key_exists($attribute, $data) && !array_key_exists($parameters[0], $data)) {
return true;
}
// 当前属性不存在,但被排除属性存在
if (!array_key_exists($attribute, $data) && array_key_exists($parameters[0], $data)) {
return true;
}
$needKey = $attribute;
$withoutKey = $parameters[0];
return false;
});
extendImplicit
方法表示即使字段不存在也要执行,用于当 fid
和 path
都不存在时的情况$validator->attributes()
方法返回待验证的数据,键值对返回;可进入 vendor\laravel\framework\src\Illuminate\Validation\Validator.php
文件,搜索 public function
查看有哪些可用的方法。$parameters[0]
为 $without:path
的 path
错误消息占位符替换:
Validator::replacer(‘$without‘, function ($message, $attribute, $rule, $parameters) {
return str_replace(‘:withoutKey‘, $parameters[0], $message);
});
定义错误语言:
在resources\lang\xx\validation.php
文件中,第一层数组下添加 :
‘$without‘ => ‘当 :withoutKey 不存在时 :attribute 不能为空。‘
其他:
【laravel】validator required_without不起作用,自定义规则
标签:ESS mamicode 数据 with turn tor min 数组 eric
原文地址:https://www.cnblogs.com/mflnhg/p/14632271.html