|
|
@@ -5,55 +5,50 @@ namespace UCore\Validator;
|
|
|
use UCore\ValidationCore;
|
|
|
use UCore\Validator;
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
- * 遍历数组,使用Validation
|
|
|
+ * 数组遍历验证器
|
|
|
*
|
|
|
+ * 遍历数组中的每个元素,使用指定的Validation类进行验证
|
|
|
*/
|
|
|
class ForeachValidation extends Validator
|
|
|
{
|
|
|
-
|
|
|
-// args[0] 验证器
|
|
|
-// args[1] 索引
|
|
|
- use ValidationMessage;
|
|
|
-
|
|
|
+ /**
|
|
|
+ * 验证数组中的每个元素
|
|
|
+ *
|
|
|
+ * args[0] 验证器类名
|
|
|
+ * args[1] 索引字段名(可选)
|
|
|
+ *
|
|
|
+ * @param mixed $values 要验证的数组
|
|
|
+ * @param array $data 所有验证数据
|
|
|
+ * @return bool 验证是否通过
|
|
|
+ */
|
|
|
public function validate(mixed $values, array $data): bool
|
|
|
{
|
|
|
- $vaClass = $this->args[0];
|
|
|
- $index = $this->args[1]??'';
|
|
|
- // "数值{index}{value}没有通过验证,消息 {message}"
|
|
|
- $message = $this->message ?? "";
|
|
|
-// dd($values);
|
|
|
- foreach ($values as $k =>$value) {
|
|
|
- if ($index) {
|
|
|
- $data2 = [
|
|
|
- $index => $value
|
|
|
+ $validationClass = $this->args[0];
|
|
|
+ $indexField = $this->args[1] ?? '';
|
|
|
+
|
|
|
+ foreach ($values as $index => $value) {
|
|
|
+ if ($indexField) {
|
|
|
+ $validationData = [
|
|
|
+ $indexField => $value
|
|
|
];
|
|
|
} else {
|
|
|
- $data2 = $value;
|
|
|
+ $validationData = $value;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * @var ValidationCore $va
|
|
|
+ * @var ValidationCore $validation
|
|
|
*/
|
|
|
- $va = new $vaClass($data2);
|
|
|
- $va->validate();
|
|
|
- if ($va->isFail()) {
|
|
|
- $p = [
|
|
|
- '{index}' => $k,
|
|
|
- '{value}' => $value,
|
|
|
- '{message}' => $va->firstError()
|
|
|
- ];
|
|
|
-
|
|
|
- $this->throwMessage($p, $message);
|
|
|
+ $validation = new $validationClass($validationData);
|
|
|
+ $validation->validate();
|
|
|
|
|
|
+ if ($validation->isFail()) {
|
|
|
+ $errorMessage = $validation->firstError();
|
|
|
+ $this->addError("索引 {$index} 的数据验证失败: {$errorMessage}");
|
|
|
return false;
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
return true;
|
|
|
-
|
|
|
}
|
|
|
-
|
|
|
}
|