Документация для разработчиков
Темная тема

Создание валидаторов

Каждый валидатор реализует интерфейс \Bitrix\Main\Validation\Validator\ValidatorInterface с методом public function validate(mixed $value): ValidationResult.

Валидатор выполняет простую задачу — проверяет значение. Он не знает, является ли это значение частью свойства или класса, и не знает, что связан с атрибутом. Валидатор можно представить как строительный блок, из которого создается более сложная система проверки данных.

Пример валидатора Min:

namespace Bitrix\Main\Validation\Validator;

use Bitrix\Main\Localization\Loc;
use Bitrix\Main\Validation\ValidationError;
use Bitrix\Main\Validation\ValidationResult;
use Bitrix\Main\Validation\Validator\ValidatorInterface;

final class Min implements ValidatorInterface
{
    public function __construct(
        private readonly int $min
    )
    {
    }

    public function validate(mixed $value): ValidationResult
    {
        $result = new ValidationResult();

        if (!is_numeric($value))
        {
            $result->addError(
                new ValidationError(
                    Loc::getMessage('MAIN_VALIDATION_MIN_NOT_A_NUMBER'),
                    failedValidator: $this
                )
            );

            return $result;
        }

        if ($value < $this->min)
        {
            $result->addError(
                new ValidationError(
                    Loc::getMessage('MAIN_VALIDATION_MIN_LESS_THAN_MIN'),
                    failedValidator: $this
                )
            );
        }

        return $result;
    }
}


© «Битрикс», 2001-2025, «1С-Битрикс», 2025