Commit ca784e9f by Taylor Otwell

continuing to refactor the validator.

parent f8e63f31
......@@ -192,9 +192,7 @@ class Validator {
*/
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 @@ class Validator {
*/
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 @@ class Validator {
*/
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 @@ class Validator {
*/
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 @@ class Validator {
*/
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 @@ class Validator {
* @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 @@ class Validator {
* @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
......
<?php
use Laravel\Lang;
use Laravel\Validation\Validator;
class ValidatorTest extends PHPUnit_Framework_TestCase {
......@@ -10,6 +11,7 @@ class ValidatorTest extends PHPUnit_Framework_TestCase {
'email' => 'required|email',
'password' => 'required|confirmed|min:6',
'name' => 'required|alpha',
'age' => 'required',
);
$attributes = array(
......@@ -24,7 +26,13 @@ class ValidatorTest extends PHPUnit_Framework_TestCase {
$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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment