1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
AtLeastOneNotEmptyValidator.php
См. документацию.
1<?php
2
3declare(strict_types=1);
4
6
7use ArrayAccess;
11
13{
14 public function __construct(
15 private readonly bool $allowZero = false,
16 private readonly bool $allowEmptyString = false,
17 )
18 {
19 }
20
21 public function validate(mixed $value): ValidationResult
22 {
24
25 if (!is_array($value) && !is_iterable($value) && !($value instanceof ArrayAccess))
26 {
27 $result->addError(new ValidationError(
28 new LocalizableMessage('MAIN_VALIDATION_AT_AT_LEAST_ONE_PROPERTY_NOT_EMPTY_UNSUPPORTED_TYPE'),
29 failedValidator: $this
30 ));
31
32 return $result;
33 }
34
35 $allEmpty = true;
36 foreach ($value as $item)
37 {
38 if (!empty($item))
39 {
40 $allEmpty = false;
41
42 break;
43 }
44
45 if ($this->allowZero && 0 === $item)
46 {
47 $allEmpty = false;
48
49 break;
50 }
51
52 if ($this->allowEmptyString && '' === $item)
53 {
54 $allEmpty = false;
55
56 break;
57 }
58 }
59
60 if ($allEmpty)
61 {
62 $result->addError(new ValidationError(
63 new LocalizableMessage('MAIN_VALIDATION_AT_LEAST_ONE_PROPERTY_NOT_EMPTY_ALL_EMPTY'),
64 failedValidator: $this
65 ));
66 }
67
68 return $result;
69 }
70}
__construct(private readonly bool $allowZero=false, private readonly bool $allowEmptyString=false,)
Определения AtLeastOneNotEmptyValidator.php:14
$result
Определения get_property_values.php:14