samsonphp/validation
SamsonPHP 验证模块
Requires
This package is not auto-updated.
Last update: 2024-09-12 00:19:16 UTC
README
SamsonPHP 验证实现
##文档 遵循 官方文档。
##安装 您可以通过 Composer 安装此包:composer require SamsonPHP/validation
此包遵循 SemVer 规范,并且不同版本之间将保持完全向后兼容。
##测试 $ vendor/bin/phpunit
##使用示例
var formValidation = new FormValidate([
new FieldValidate({
el: '#product_name',
insertTo: '.error-wrapper',
styleList: '*'
}).required().length(),
new FieldValidate({
el: '#product_description',
insertTo: '.error-wrapper',
styleList: '*'
}).required(),
new FieldValidate({
el: '#product_usp',
insertTo: '.error-wrapper',
styleList: '*'
}).required()
]);
s('#send-form-button').click(function () {
return formValidation.validate();
});
##使用 FieldValidator 创建 FieldValidator 类的实例,并传递选项给它
var productFieldValidator = new FieldValidate({
el: '#product_name',
insertTo: '.error-wrapper',
styleList: '*'
}).required().url()
如果您想获取验证结果,必须调用此方法
productFieldValidator.validate(); //=> true|false
在此示例中
- el - [必需] 字段的选择器,可以是字符串或 s() 元素
- insertTo - 可显示错误消息的字段选择器,可以是字符串或 s() 元素
- styleList - 将添加到消息文本的前缀(默认: '')
但有很多选项可以设置
- trim - 需要删除前缀和后缀空格
- fieldErrorClass - 将添加到字段的类,可以是字符串或数组(默认: ['class-error-field-', 'class-error-field'])
如果它是数组,则其第一个元素将是所有错误验证器的公共前缀。
例如 ['class-error-field-', 'class-error-field']
将添加以下类到字段:
- showErrorBlock - 是否显示错误块。默认情况下,如果传递了 insertTo 元素,则块将显示。如果您想隐藏错误块,请将其传递为 false
- insertToType - 插入错误块的位置(默认:MODE_INSERT_TO_PARENT)
MODE_INSERT_TO_DEFAULT - 与 insertTo 元素没有变化
MODE_INSERT_TO_PARENT - 在字段的父元素中查找元素插入位置
- showErrorBlockType - 输出类的位置(默认:MODE_SHOW_ERROR_BLOCK_DEFAULT)
MODE_SHOW_ERROR_BLOCK_DEFAULT - 更改字段中的类
MODE_SHOW_ERROR_BLOCK_PARENT - 更改父块中的类
##创建自定义验证器 创建新的验证器非常简单。它可以是一个具有 export 和 validate 方法的类 validator 或 alias
要创建新的验证器,只需创建一个具有 export 和 validate 方法的类 export 方法将返回将被添加到主字段对象的对象 validate 方法将使用自定义验证逻辑验证字段
类的构造函数可以接收字段对象
这里有一个简单的必需验证器
/**
* Required validator
*/
var RequiredValidator = (function () {
/**
* Init class
* @param field
*/
var constructor = function (field) {
// Required type default values
this.id = 'required';
this.defaultRequiredMessage = 'Field have to be filled';
this.field = field;
};
var self = constructor.prototype;
/**
* Export data into field
*/
self.export = function () {
var validatorInstance = this;
return {
/**
* Required validation
* @param errorMessage
* @returns {FieldValidate}
*/
required: function (errorMessage) {
validatorInstance.defaultRequiredMessage = errorMessage || validatorInstance.defaultRequiredMessage;
this.reservedValidators.push(validatorInstance.id);
return this;
}
}
};
/**
* Validate validator
*/
self.validate = function () {
if (this.field._getFieldValue() == '') {
this.field.addError(this.id, this.defaultRequiredMessage);
this.field.valid = false;
} else {
this.field.removeError(this.id);
this.field.valid = true;
}
};
return constructor;
})();
您需要将您的验证器添加到注册验证器数组中
// Register all used validators
this.registerValidator = [
new RequiredValidator(this)
];
required 方法将被添加到字段实例中,并可以访问为 new FieldValidator(...).required()
,并且可以添加此类验证器
您还可以使用别名验证器
当您需要覆盖另一个类验证器的一些默认值并将其保存为新验证器时,可以使用它。
例如,让我们创建一个 url 验证器,它使用正则表达式验证器
/**
* Url regexp validator
*/
var UrlValidator = {
export: function () {
return {
/**
* Url validation
* @param errorMessage
* @returns {FieldValidate}
*/
url: function (errorMessage) {
var msg = errorMessage || 'Field should be a url',
urlPattern = /^(https?:\/\/)?[\w]*\.[\w\-\&\#\=\/\.?\(\)]*$/;
this.regExp(urlPattern, msg);
return this;
}
}
}
};
如您所见,对象中只有一个方法返回将用于扩展的新对象
您必须将此验证器作为对象添加到注册数组中,而无需创建它
// Register all used validators
this.registerValidator = [
new RequiredValidator(this),
new RegExpValidator(this),
UrlValidator
];
您可以使用它如下
new FieldValidator(...).required().url()
但您不应使用此验证器与正则表达式一起使用
##贡献请随时fork和创建pull请求。
##安全如果您发现任何与安全相关的问题,请使用此存储库问题跟踪器。
##许可开放软件许可("OSL") v 3.0。请参阅许可文件以获取更多信息。