mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-08 03:01:43 +09:00
issue 1990, fixed a bug. does not working expression rule of validator
git-svn-id: http://xe-core.googlecode.com/svn/branches/1.5.0@10677 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
8d1e6ca1ba
commit
914dc85249
2 changed files with 41 additions and 1 deletions
|
|
@ -356,7 +356,7 @@ class Validator
|
||||||
return in_array($value, $rule['test']);
|
return in_array($value, $rule['test']);
|
||||||
case 'expr':
|
case 'expr':
|
||||||
if(!$rule['func_test']) {
|
if(!$rule['func_test']) {
|
||||||
$rule['func_test'] = create_function('$a', 'return ('.preg_replace('/\$\$/', '$a', $rule['test']).');');
|
$rule['func_test'] = create_function('$a', 'return ('.preg_replace('/\$\$/', '$a', html_entity_decode($rule['test'])).');');
|
||||||
}
|
}
|
||||||
return $rule['func_test']($value);
|
return $rule['func_test']($value);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -114,6 +114,46 @@ class ValidatorTest extends PHPUnit_Framework_TestCase
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testCustomRule() {
|
public function testCustomRule() {
|
||||||
|
// regex
|
||||||
|
$vd = new Validator();
|
||||||
|
$customRules['regex_rule']['type'] = 'regex';
|
||||||
|
$customRules['regex_rule']['test'] = '/[a-z]+/';
|
||||||
|
$vd->addRule($customRules);
|
||||||
|
$vd->addFilter('regex_field', array('rule' => 'regex_rule'));
|
||||||
|
|
||||||
|
$this->assertTrue($vd->validate(array('regex_field' => 'abc')));
|
||||||
|
$this->assertFalse($vd->validate(array('regex_field' => 'ABC')));
|
||||||
|
|
||||||
|
// enum
|
||||||
|
$vd = new Validator();
|
||||||
|
$customRules['enum_rule']['type'] = 'enum';
|
||||||
|
$customRules['enum_rule']['test'] = 'a,b,c';
|
||||||
|
$vd->addRule($customRules);
|
||||||
|
$vd->addFilter('enum_field', array('rule' => 'enum_rule'));
|
||||||
|
|
||||||
|
$this->assertTrue($vd->validate(array('enum_field' => 'a')));
|
||||||
|
$this->assertFalse($vd->validate(array('enum_field' => 'd')));
|
||||||
|
|
||||||
|
// enum with custom delimiter
|
||||||
|
$vd = new Validator();
|
||||||
|
$customRules['enum_rule2']['type'] = 'enum';
|
||||||
|
$customRules['enum_rule2']['test'] = 'a@b@c';
|
||||||
|
$customRules['enum_rule2']['delim'] = '@';
|
||||||
|
$vd->addRule($customRules);
|
||||||
|
$vd->addFilter('enum_field2', array('rule' => 'enum_rule2'));
|
||||||
|
|
||||||
|
$this->assertTrue($vd->validate(array('enum_field2' => 'a')));
|
||||||
|
$this->assertFalse($vd->validate(array('enum_field2' => 'd')));
|
||||||
|
|
||||||
|
// expr
|
||||||
|
$vd = new Validator();
|
||||||
|
$customRules['expr_rule']['type'] = 'expr';
|
||||||
|
$customRules['expr_rule']['test'] = '$$ < 10';
|
||||||
|
$vd->addRule($customRules);
|
||||||
|
$vd->addFilter('expr_field', array('rule' => 'expr_rule'));
|
||||||
|
|
||||||
|
$this->assertTrue($vd->validate(array('expr_field' => '5')));
|
||||||
|
$this->assertFalse($vd->validate(array('expr_field' => '15')));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testCondition() {
|
public function testCondition() {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue