ylab/validation

Bitrix 的 illuminate/validation (Laravel) 库的模块包装器

安装: 287

依赖: 0

建议者: 0

安全: 0

星标: 8

关注者: 3

分叉: 2

开放问题: 0

类型:bitrix-d7-module

0.2.0 2018-11-12 16:05 UTC

This package is not auto-updated.

Last update: 2024-09-26 01:31:30 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License

该模块是 Laravel 验证库的包装器。

  • php: >=5.6.4
  • Bitrix: >= 17.0.0
  • illuminate/validation: >=5.4

从 github 安装

  • 需要通过 composer 安装 illuminate/validation

    php composer.phar install illuminate/validation 5.5

  • 在文件 local/php_interface/init.php 中连接 composer 自动加载器

    require_once(dirname(__FILE__) . '/../vendor/autoload.php');

  • 复制仓库

    cd local/modules
    git clone git@github.com:ylabio/ylab.validation.git
    cd ylab.validation
    
  • local/modules 文件夹中克隆模块仓库,之后,需要在管理员面板中安装模块: 桌面 -> 市场place -> 已安装解决方案.

通过 composer 安装

composer require ylab/validation:dev-master

为了在 local/modules 中安装,需要在 composer.json 中添加

"extra": {
  //путь до папки local, например ../local, если composer.json лежит в папке local
  "bitrix-dir": ""
}

使用

要实现具有验证的组件,可以使用以下示例代码: local/modules/ylab.validation/install/components/ylab/validation.test/class.php.

在此示例中,组件类继承自抽象类 YLab\Validation\ComponentValidation,该类负责初始化验证对象并强制实现 rules() 方法。

在抽象类的构造函数中,验证器对象初始化如下

$this->oValidator = ValidatorHelper::makeCustomValidator([], $this->rules(), $sFile, LANGUAGE_ID);

ValidatorHelper::makeCustomValidator() 方法中,连接组件和模块的语言文件。模块的语言文件包含标准错误描述,继承的组件可以替换预置的错误信息。

组件示例

https://github.com/ylabio/ylab.validation/blob/master/install/components/ylab/validation.test/class.php

自定义验证规则

可以在组件中创建自定义验证规则,在单独的方法或 executeComponent() 方法中。

/**
 * При необходимости в компоненте можно реализовать дополнительные правила валидации, например, данный валидатор 
 * проверяет наличие пользователя в базе данных по ID.
 */
$this->oValidator->addExtension('user_exists', function($attribute, $value, $parameters, $validator) {
    $arValidate = UserTable::getList([
        'select' => ['ID'],
        'filter' => ['=ID' => $value],
        'limit' => 1
    ])->fetch();

    return $arValidate['ID'] ? true : false;
});