diff --git a/laravel/validation/validator.php b/laravel/validation/validator.php index 539ffe6a..3b308ed9 100644 --- a/laravel/validation/validator.php +++ b/laravel/validation/validator.php @@ -192,9 +192,7 @@ protected function check($attribute, $rule) */ protected function error($attribute, $rule, $parameters) { - $message = $this->get_message($attribute, $rule); - - $message = $this->format_message($message, $attribute, $rule, $parameters); + $message = $this->format($this->message($attribute, $rule), $attribute, $rule, $parameters); $this->errors->add($attribute, $message); } @@ -273,7 +271,7 @@ protected function validate_integer($attribute, $value) */ protected function validate_size($attribute, $value, $parameters) { - return $this->get_size($attribute) == $parameters[0]; + return $this->get_size($attribute, $value) == $parameters[0]; } /** @@ -286,7 +284,7 @@ protected function validate_size($attribute, $value, $parameters) */ protected function validate_between($attribute, $value, $parameters) { - return $this->get_size($attribute) >= $parameters[0] and $this->get_size($attribute) <= $parameters[1]; + return $this->get_size($attribute, $value) >= $parameters[0] and $this->get_size($attribute, $value) <= $parameters[1]; } /** @@ -299,7 +297,7 @@ protected function validate_between($attribute, $value, $parameters) */ protected function validate_min($attribute, $value, $parameters) { - return $this->get_size($attribute) >= $parameters[0]; + return $this->get_size($attribute, $value) >= $parameters[0]; } /** @@ -312,25 +310,28 @@ protected function validate_min($attribute, $value, $parameters) */ protected function validate_max($attribute, $value, $parameters) { - return $this->get_size($attribute) <= $parameters[0]; + return $this->get_size($attribute, $value) <= $parameters[0]; } /** * Get the size of an attribute. * + * This method will determine if the attribute is a number, string, or file and + * return the proper size accordingly. If it is a number, then number itself is + * the size; if it is a file, the size is kilobytes in the size; if it is a + * string, the length is the size. + * * @param string $attribute + * @param mixed $value * @return mixed */ - protected function get_size($attribute) + protected function get_size($attribute, $value) { - if (is_numeric($this->attributes[$attribute]) and $this->has_rule($attribute, $this->numeric_rules)) + if (is_numeric($value) and $this->has_rule($attribute, $this->numeric_rules)) { return $this->attributes[$attribute]; } - - $value = $this->attributes[$attribute]; - - if (array_key_exists($attribute, Input::file())) + elseif (array_key_exists($attribute, Input::file())) { return $value['size'] / 1024; } @@ -501,7 +502,7 @@ protected function validate_mimes($attribute, $parameters) * @param string $rule * @return string */ - protected function get_message($attribute, $rule) + protected function message($attribute, $rule) { if (array_key_exists($attribute.'_'.$rule, $this->messages)) { @@ -537,7 +538,7 @@ protected function get_message($attribute, $rule) * @param array $parameters * @return string */ - protected function format_message($message, $attribute, $rule, $parameters) + protected function format($message, $attribute, $rule, $parameters) { // First we will get the language line for the attribute being validated. // Storing attribute names in a validation file allows the easily replacement diff --git a/tests/Cases/ValidatorTest.php b/tests/Cases/ValidatorTest.php index 190139fa..f7c13881 100644 --- a/tests/Cases/ValidatorTest.php +++ b/tests/Cases/ValidatorTest.php @@ -1,5 +1,6 @@ 'required|email', 'password' => 'required|confirmed|min:6', 'name' => 'required|alpha', + 'age' => 'required', ); $attributes = array( @@ -24,7 +26,13 @@ public function test_simple_group_of_validations() $validator = Validator::make($attributes, $rules, $messages); $this->assertFalse($validator->valid()); + $this->assertTrue($validator->errors->has('name')); + $this->assertTrue($validator->errors->has('email')); $this->assertFalse($validator->errors->has('password')); + $this->assertEquals(count($validator->errors->get('name')), 1); + $this->assertEquals($validator->errors->first('name'), 'The name must be alphabetic!'); + $this->assertEquals($validator->errors->first('email'), Lang::line('validation.email', array('attribute' => 'email'))->get()); + $this->assertEquals($validator->errors->first('age'), Lang::line('validation.required', array('attribute' => 'age'))->get()); } } \ No newline at end of file