diff --git a/src/Valitron/Validator.php b/src/Valitron/Validator.php index 415fabc..ced374a 100644 --- a/src/Valitron/Validator.php +++ b/src/Valitron/Validator.php @@ -612,7 +612,7 @@ class Validator $i = 1; foreach ($params as $k => $v) { $tag = '{field'. $i .'}'; - $label = isset($params[$k]) && isset($this->_labels[$params[$k]]) ? $this->_labels[$params[$k]] : $tag; + $label = isset($params[$k]) && !is_array($params[$k]) && isset($this->_labels[$params[$k]]) ? $this->_labels[$params[$k]] : $tag; $msg = str_replace($tag, $label, $msg); $i++; } diff --git a/tests/Valitron/Validate.php b/tests/Valitron/Validate.php index 0bd3f82..8f61764 100644 --- a/tests/Valitron/Validate.php +++ b/tests/Valitron/Validate.php @@ -511,6 +511,29 @@ class ValidateTest extends \PHPUnit_Framework_TestCase $this->assertEquals($v1->errors(), $v2->errors()); } + public function testCustomLabelInMessage() + { + $v = new Valitron\Validator(array()); + $v->rule('required', 'name')->message('{field} is required')->label('NAME!!!'); + $v->validate(); + $this->assertEquals(array('NAME!!! is required'), $v->errors('name')); + } + + public function testCustomLabelArrayInMessage() + { + $v = new Valitron\Validator(array()); + $v->rule('required', array('name', 'email'))->message('{field} is required'); + $v->labels(array( + 'name' => 'Name', + 'email' => 'Email address' + )); + $v->validate(); + $this->assertEquals(array( + 'name' => array('Name is required'), + 'email' => array('Email address is required') + ), $v->errors()); + } + /** * Custom rules and callbacks */ @@ -580,6 +603,15 @@ class ValidateTest extends \PHPUnit_Framework_TestCase $v->rule('testRule', 'name', array('foo', 'bar'))->message('Invalid name selected.'); $this->assertFalse($v->validate()); } + + public function testAddRuleCallbackArrayWithArrayAsExtraParameterAndCustomMessageLabel() + { + $v = new Validator(array('name' => 'Chester Tester')); + $v->labels(array('name' => 'Name')); + $v->addRule('testRule', array($this, 'sampleObjectCallbackFalse')); + $v->rule('testRule', 'name', array('foo', 'bar'))->message('Invalid name selected.'); + $this->assertFalse($v->validate()); + } } function sampleFunctionCallback($field, $value, array $params) {