jii-model
Version:
100 lines (79 loc) • 2.77 kB
JavaScript
/**
* @author <a href="http://www.affka.ru">Vladimir Kozhin</a>
* @license MIT
*/
'use strict';
var Jii = require('jii');
var _isArray = require('lodash/isArray');
var _isString = require('lodash/isString');
var Validator = require('./Validator');
/**
* @class Jii.validators.StringValidator
* @extends Jii.validators.Validator
*/
var StringValidator = Jii.defineClass('Jii.validators.StringValidator', /** @lends Jii.validators.StringValidator.prototype */{
__extends: Validator,
length: null,
max: null,
min: null,
tooLong: null,
tooShort: null,
notEqual: null,
init() {
this.__super();
if (_isArray(this.length)) {
if (this.length[0]) {
this.min = this.length[0];
}
if (this.length[1]) {
this.max = this.length[1];
}
this.length = null;
}
if (this.message === null) {
this.message = Jii.t('jii', '{attribute} must be a string.');
}
if (this.min !== null && this.tooShort === null) {
this.tooShort = Jii.t('jii', '{attribute} should contain at least {min} characters.');
}
if (this.max !== null && this.tooLong === null) {
this.tooLong = Jii.t('jii', '{attribute} should contain at most {max} characters.');
}
if (this.length !== null && this.notEqual === null) {
this.notEqual = Jii.t('jii', '{attribute} should contain {length} characters.');
}
},
validateAttribute(object, attribute) {
var value = object.get(attribute);
if (!_isString(value)) {
this.addError(object, attribute, this.message);
return;
}
var length = value.length;
if (this.min !== null && length < this.min) {
this.addError(object, attribute, this.tooShort, {
min: this.min
});
}
if (this.max !== null && length > this.max) {
this.addError(object, attribute, this.tooLong, {
max: this.max
});
}
if (this.length !== null && length !== this.length) {
this.addError(object, attribute, this.notEqual, {
length: this.length
});
}
},
validateValue(value) {
if (!_isString(value)) {
return false;
}
var length = value.length;
return (this.min === null || length >= this.min) &&
(this.max === null || length <= this.max) &&
(this.length === null || length === this.length);
}
});
module.exports = StringValidator;