Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/proklung/bitrix.iblock.element.validator.bundle
Бандл валидации элементов инфоблока по свойствам при сохранении для Битрикс+Symfony
https://github.com/proklung/bitrix.iblock.element.validator.bundle
bitrix bitrix-symfony php7 symfony-bundle
Last synced: 17 days ago
JSON representation
Бандл валидации элементов инфоблока по свойствам при сохранении для Битрикс+Symfony
- Host: GitHub
- URL: https://github.com/proklung/bitrix.iblock.element.validator.bundle
- Owner: ProklUng
- Created: 2021-05-04T06:18:08.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2021-08-08T16:06:58.000Z (about 3 years ago)
- Last Synced: 2024-10-03T07:05:49.937Z (about 1 month ago)
- Topics: bitrix, bitrix-symfony, php7, symfony-bundle
- Language: PHP
- Homepage:
- Size: 12.7 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.MD
Awesome Lists containing this project
README
# Бандл валидации элементов инфоблока по свойствам при сохранении для Битрикс+Symfony
## Установка
```bash
composer require proklung/bitrix-iblock-element-validator-bundle
```## Принцип работы
### Валидатор
Реализует интерфейс `Prokl\BitrixIblockElementValidatorBundle\Services\Contracts\BitrixPropertyValidatorInterface`.
Методы:
- `setPropertyCode(string $code)` - символьный код валидируемого свойства
- `validate($value)` - валидация. Возвращает true, если значение OK, иначе - false
- `setErrorMessage(string $errorMessage)` - сообщение об ошибке валидации
- `setIdIblock(int $idIblock)` - ID инфоблока.Для удобства имеется класс `Prokl\BitrixIblockElementValidatorBundle\Services\AbstractBitrixPropertyValidator`
на автомате включающий сеттеры интерфейса.Пример валидатора:
```php
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 === '[email protected]') {
throw new ValidateErrorException(
$this->errorMessage
);
}return true;
}
}
```Каждый валидатор в конфигурации контейнера помечается тэгом `bitrix_iblock_element_validator.custom_validator`.
Ключ - название сервиса.Как-то так:
```yaml
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`.
```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_validatorfield_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_validatorfield_text_validator:
id_iblock: 1
code_property: TEXT
sanitize: 'trim|escape|strip_tags|cast:string' # Правило санации
```