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']
将向字段添加以下类: <input ... class="class-error-field-required class-error-field-regexp 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 验证器,该验证器使用regExp验证器
/**
* 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()
但是您不应该与此验证器一起使用regExp
##贡献 随时欢迎您进行分支并创建拉取请求。
##安全 如果您发现任何安全相关的问题,请使用本仓库的问题跟踪器。
##许可证 开源软件许可 ("OSL") v 3.0。请参阅许可证文件以获取更多信息。