微梦表单验证微梦表单验证
首页
插件
视频教程
源码
  • 6.x
  • 5.x
  • 简体中文
  • English
首页
插件
视频教程
源码
  • 6.x
  • 5.x
  • 简体中文
  • English
  • 介绍
  • 指南

    • 开始使用
    • 验证器
    • 验证场景
    • 验证事件
    • 内置规则
    • 自定义规则
    • 规则参数解析器
    • 自定义错误消息
    • 数据处理器
    • 验证器集合
  • 更新日志

如果你需要在规则定义的过程中动态获取一些数据,你可以使用此解析器。

use Itwmw\Validate\Support\Traits\RuleParamsParser;
use Itwmw\Validate\Validate;

class Validator extends Validate
{
    use RuleParamsParser;
}

规则参数解析器可以完成以下功能:

  • 解析参数中的方法调用
  • 解析参数中的属性获取
  • 解析参数中的环境变量
  • 解析参数中的字段引用

以下代码均为示例,不考虑其实用性

方法调用

使用 {#function} 可以调用方法,包括全局方法,当前类下的方法,指定类中的静态方法

class Validator extends Validate
{
    use RuleParamsParser;

    protected $rule = [
        'password' => 'required|max:{#getPasswordMaxSize}'
    ];

    public function getPasswordMaxSize(): int
    {
        return 18;
    }
}

支持调用指定类中的静态方法,需要使用完整命名空间,如:max:{#App\\Helper\\Constant::getPasswordMaxSize}

传参

如果方法需要传参,可以在方法名后面加上参数,如:{#getPasswordMaxSize(18)},此参数也支持使用 属性获取、环境变量、字段引用

属性获取

使用{->property}来获取当前类的属性,多级类引用使用 -> 分隔,如:{->user->name},数组引用,使用 . 分割,如:{->user.info->nickname}

class Validator extends Validate
{
    use RuleParamsParser;

    protected int $passwordMaxSize = 18;

    protected $rule = [
        'password' => 'required|max:{->passwordMaxSize}'
    ];
}

环境变量

使用{@env} 来获取环境变量中的值

putenv('PASSWORD_MAX_SIZE=18');

class Validator extends Validate
{
    use RuleParamsParser;

    protected int $passwordMaxSize = 18;

    protected $rule = [
        'password' => 'required|max:{@PASSWORD_MAX_SIZE}'
    ];
}

字段引用

使用{:field} 来获取字段的值

class Validator extends Validate
{
    use RuleParamsParser;

    protected int $passwordMaxSize = 18;

    protected $rule = [
        'password_length' => 'required|integer|min:6|max:20',
        'password' => 'required|max:{:password_length}'
    ];
}

支持对数组成员的引用,用法: {:field.field.index....}

Prev
自定义规则
Next
自定义错误消息