feat: Возможность добавлять правила валидации
This commit is contained in:
parent
9d730c2961
commit
2b021ffb61
1 changed files with 26 additions and 23 deletions
|
|
@ -14,20 +14,7 @@ class Validator
|
|||
{
|
||||
protected $chain = array(); // Массив правил
|
||||
protected $errorMsg = array(); // Массив ошибок
|
||||
|
||||
function __construct($rules = array()) {
|
||||
$this->addRuleList($rules);
|
||||
}
|
||||
|
||||
/**
|
||||
* Добавление списка правил в специальном формате
|
||||
* array(array('name' => fieldname, 'validate' => ruletext), ...)
|
||||
* fieldname - Имя переменой для проверки
|
||||
* ruletext - Описание правила см. формат правила ниже
|
||||
*/
|
||||
public function addRuleList(array $input)
|
||||
{
|
||||
$type = array(
|
||||
protected $type = array(
|
||||
'date' => 'ctiso\\Validator\\Rule\\Date',
|
||||
'email' => 'ctiso\\Validator\\Rule\\Email',
|
||||
'emaillist'=> 'ctiso\\Validator\\Rule\\EmailList',
|
||||
|
|
@ -43,6 +30,22 @@ class Validator
|
|||
'code' => 'ctiso\\Validator\\Rule\\Code'
|
||||
);
|
||||
|
||||
function __construct($rules = array()) {
|
||||
$this->addRuleList($rules);
|
||||
}
|
||||
|
||||
function addRuleType($name, $className) {
|
||||
$this->type[$name] = $className;
|
||||
}
|
||||
|
||||
/**
|
||||
* Добавление списка правил в специальном формате
|
||||
* array(array('name' => fieldname, 'validate' => ruletext), ...)
|
||||
* fieldname - Имя переменой для проверки
|
||||
* ruletext - Описание правила см. формат правила ниже
|
||||
*/
|
||||
public function addRuleList(array $input)
|
||||
{
|
||||
// Разбор правила проверки
|
||||
// Формат правила 'rule1|rule2,param1=value1|rule3,param1=value1,param2=value2'
|
||||
foreach ($input as $value) {
|
||||
|
|
@ -55,8 +58,8 @@ class Validator
|
|||
$rule_param = explode(",", $rule);
|
||||
$name = array_shift($rule_param);
|
||||
|
||||
if (isset($type[$name])) {
|
||||
$constructor = $type[$name];
|
||||
if (isset($this->type[$name])) {
|
||||
$constructor = $this->type[$name];
|
||||
$ruleObj = new $constructor($value['name'], false); // Нужны шаблонные сообщения для правил
|
||||
if (isset($value['context'])) {
|
||||
$ruleObj->setContext($value['context']);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue