Add support for associative arrays using 'in'

This commit is contained in:
Vance Lucas 2013-08-30 10:31:57 -05:00
parent f0e08fbc06
commit 5dc7fd9fb3
2 changed files with 15 additions and 0 deletions

View File

@ -226,6 +226,10 @@ class Validator
*/ */
protected function validateIn($field, $value, $params) protected function validateIn($field, $value, $params)
{ {
$isAssoc = array_values($params[0]) !== $params[0];
if($isAssoc) {
$params[0] = array_keys($params[0]);
}
return in_array($value, $params[0]); return in_array($value, $params[0]);
} }

View File

@ -182,6 +182,17 @@ class ValidateTest extends BaseTestCase
$this->assertTrue($v->validate()); $this->assertTrue($v->validate());
} }
public function testInValidAssociativeArray()
{
$v = new Validator(array('color' => 'green'));
$v->rule('in', 'color', array(
'red' => 'Red',
'green' => 'Green',
'blue' => 'Blue'
));
$this->assertTrue($v->validate());
}
public function testInInvalid() public function testInInvalid()
{ {
$v = new Validator(array('color' => 'yellow')); $v = new Validator(array('color' => 'yellow'));