Files
douba_shop/crmeb/form/CommonRule.php
Karlcarlo c9a98f342c chore: 添加静态资源文件和版本配置文件
添加大量图片、字体、音频等静态资源文件,包括用户界面图片、模板文件和安装界面素材
添加系统版本配置文件(.version)和常量定义文件(.constant)
更新供应商依赖文件,包括Symfony VarDumper组件和相关许可证文件
添加验证码配置文件(captcha.php)和.gitignore规则
2026-03-06 20:14:23 +08:00

181 lines
4.0 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
namespace crmeb\form;
/**
* Class CommonRule
* @package crmeb\form
*/
class CommonRule implements BuildInterface
{
/**
* 验证类型
*/
const VALIDATE_TYPE = ['string', 'number', 'boolean', 'method', 'regexp', 'integer', 'float', 'array', 'object', 'enum', 'date', 'url', 'hex', 'email'];
/**
* @var string
*/
protected $type = '';
/**
* @var bool
*/
protected $required = false;
/**
* @var string
*/
protected $pattern = '';
/**
* 枚举值
* @var array
*/
protected $enum = [];
/**
* 提示语
* @var string
*/
protected $message = '';
/**
* 深度验证对象
* @var array
*/
protected $fields = [];
/**
* 验证触发方式
* @var string
*/
protected $trigger = 'blur';
/**
* @param string $type
* @return $this
*/
public function type(string $type)
{
$this->type = in_array($type, self::VALIDATE_TYPE) ? $type : null;
if (!$this->type) {
throw new FormValidate('验证类型错误');
}
return $this;
}
/**
* 是否必填
* @return $this
*/
public function required()
{
$this->required = true;
return $this;
}
/**
* 设置错误提示
* @param string $message
* @return $this
*/
public function message(string $message)
{
$this->message = $message;
return $this;
}
/**
* 提示语
* @return string
*/
public function getMessage()
{
return $this->message;
}
/**
* 枚举数据
* @param array $enum
* @return $this
*/
public function enum(array $enum)
{
$this->enum = $enum;
return $this;
}
/**
* 正则表达式
* @param string $pattern
* @return $this
*/
public function pattern(string $pattern)
{
$this->pattern = $pattern;
return $this;
}
/**
* 验证规则
* @param string|array|BuildInterface $field
* @param array $rule
* @return $this
*/
public function field($field, array $rule = [])
{
if (!in_array($this->type, ['array', 'object'])) {
throw new BuildException('无效规则,类型只能在array或者object情况下才可设置');
}
if ($this->type === 'array') {
$rules = [];
if ($field instanceof BuildInterface) {
$rules = $field->toArray();
}
$this->fields[] = $rules;
} else {
$rules = [];
foreach ($rule as $item) {
if ($item instanceof BuildInterface) {
$rules[] = $item->toArray();
}
}
$this->fields[$field] = $rules;
}
return $this;
}
/**
* 数据转换
* @return array
*/
public function toArray(): array
{
$data = [
'required' => $this->required,
'message' => $this->message,
'trigger' => $this->trigger,
'pattern' => $this->pattern,
'enum' => $this->enum,
'type' => $this->type
];
$res = [];
foreach ($data as $key => $value) {
if (is_bool($value) || $value) {
$res[$key] = $value;
}
}
return $res;
}
}