proklung / bitrix-iblock-element-validator-bundle

用于通过属性验证Bitrix元素的Symfony扩展包

1.0.1 2021-08-08 16:06 UTC

This package is auto-updated.

Last update: 2024-09-08 23:01:39 UTC


README

安装

composer require proklung/bitrix-iblock-element-validator-bundle

工作原理

验证器

实现了接口 Prokl\BitrixIblockElementValidatorBundle\Services\Contracts\BitrixPropertyValidatorInterface.

方法

  • setPropertyCode(string $code) - 设置要验证的属性的符号代码
  • validate($value) - 验证。如果值正确,返回true,否则返回false
  • setErrorMessage(string $errorMessage) - 设置验证错误消息
  • setIdIblock(int $idIblock) - 信息块的ID。

为了方便,有一个类 Prokl\BitrixIblockElementValidatorBundle\Services\AbstractBitrixPropertyValidator 自动包含接口的setter。

验证器示例

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' # Правило санации