proklung / bitrix-iblock-element-validator-bundle
Symfony bundle for validation Bitrix elements by property.
Installs: 26
Dependents: 1
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: >=7.1 | 8.0
- illuminate/translation: ~6 | ~7 | ~8
- illuminate/validation: ~6 | ~7 | ~8
- symfony/config: ^4.4 || ^5.0
- symfony/dependency-injection: ^4.4 || ^5.0
- symfony/http-kernel: ^4.4 || ^5.0
- waavi/sanitizer: ^1.0
This package is auto-updated.
Last update: 2024-11-08 23:20:20 UTC
README
Установка
composer require proklung/bitrix-iblock-element-validator-bundle
Принцип работы
Валидатор
Реализует интерфейс Prokl\BitrixIblockElementValidatorBundle\Services\Contracts\BitrixPropertyValidatorInterface
.
Методы:
setPropertyCode(string $code)
- символьный код валидируемого свойстваvalidate($value)
- валидация. Возвращает true, если значение OK, иначе - falsesetErrorMessage(string $errorMessage)
- сообщение об ошибке валидацииsetIdIblock(int $idIblock)
- ID инфоблока.
Для удобства имеется класс Prokl\BitrixIblockElementValidatorBundle\Services\AbstractBitrixPropertyValidator
на автомате включающий сеттеры интерфейса.
Пример валидатора:
use Prokl\BitrixIblockElementValidatorBundle\Services\Exceptions\ValidateErrorException; class ExampleCustomValidator extends AbstractBitrixPropertyValidator { public function __construct(string $errorMessage) { $this->errorMessage = $errorMessage; } /** * @inheritDoc */ public function validate($value): bool { if ($value === 'funt@mail.ru') { throw new ValidateErrorException( $this->errorMessage ); } return true; } }
Каждый валидатор в конфигурации контейнера помечается тэгом bitrix_iblock_element_validator.custom_validator
.
Ключ - название сервиса.
Как-то так:
bitrix_iblock_element_validator.example_custom_validator: class: Prokl\BitrixIblockElementValidatorBundle\Services\ExampleCustomValidator arguments: ['Кастомная ошибка: забаненый email'] tags: - { name: bitrix_iblock_element_validator.custom_validator, key: bitrix_iblock_element_validator.example_custom_validator }
Валидаторы в комплекте
bitrix_iblock_element_validator.unique_validator
- проверка элемента на уникальность. Не дает сохранить значение, которое уже есть в базе для заданного свойства.
Конфигурация бандла
Файл /local/config/packages/bitrix_iblock_element_validator.yaml
.
bitrix_iblock_element_validator: enabled: true iblocks: ##################################################### # Определение валидации свойства code_property # инфоблока id_iblock. # optional_validator - опциональный сервис валидации. ###################################################### field_email_validator: id_iblock: 1 sanitize: '' # Правило санации code_property: EMAIL rule: 'required|string|min:12' # Правило валидации согласно принципам Laravel Validator error_message: '#FIELD_NAME#: должна быть строка, не менее двенадцати символов длиной.' optional_validator: bitrix_iblock_element_validator.example_custom_validator field_phone_validator: id_iblock: 1 code_property: Phone sanitize: '' rule: 'string|min:5' # Правило валидации согласно принципам Laravel Validator error_message: '#FIELD_NAME#: должна быть строка, не менее пяти символов длиной.' optional_validator: ~ field_email_validator_unique: id_iblock: 1 code_property: EMAIL optional_validator: bitrix_iblock_element_validator.unique_validator field_text_validator: id_iblock: 1 code_property: TEXT sanitize: 'trim|escape|strip_tags|cast:string' # Правило санации