From 554d390f1e89af87a6ce8c74b529e86b3c9ef3cb Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Fri, 3 Feb 2012 11:02:54 -0600 Subject: [PATCH] added same and different validation rules. --- application/language/en/validation.php | 2 ++ laravel/validator.php | 38 +++++++++++++++++++++++--- 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/application/language/en/validation.php b/application/language/en/validation.php index 7e46e155..8c230f21 100644 --- a/application/language/en/validation.php +++ b/application/language/en/validation.php @@ -29,6 +29,7 @@ "string" => "The :attribute must be between :min - :max characters.", ), "confirmed" => "The :attribute confirmation does not match.", + "different" => "The :attribute and :other must be different.", "email" => "The :attribute format is invalid.", "exists" => "The selected :attribute is invalid.", "image" => "The :attribute must be an image.", @@ -49,6 +50,7 @@ "not_in" => "The selected :attribute is invalid.", "numeric" => "The :attribute must be a number.", "required" => "The :attribute field is required.", + "same" => "The :attribute and :other must match.", "size" => array( "numeric" => "The :attribute must be :size.", "file" => "The :attribute must be :size kilobyte.", diff --git a/laravel/validator.php b/laravel/validator.php index 73e1b205..d801fcbb 100644 --- a/laravel/validator.php +++ b/laravel/validator.php @@ -253,9 +253,7 @@ protected function validate_required($attribute, $value) */ protected function validate_confirmed($attribute, $value) { - $confirmed = $attribute.'_confirmation'; - - return isset($this->attributes[$confirmed]) and $value == $this->attributes[$confirmed]; + return $this->validate_same($attribute, $value, array($attribute.'_confirmation')); } /** @@ -272,6 +270,36 @@ protected function validate_accepted($attribute, $value) return $this->validate_required($attribute, $value) and ($value == 'yes' or $value == '1'); } + /** + * Validate that an attribute is the same as another attribute. + * + * @param string $attribute + * @param mixed $value + * @param array $parameters + * @return bool + */ + protected function validate_same($attribute, $value, $parameters) + { + $other = $parameters[0]; + + return isset($this->attributes[$other]) and $value == $this->attributes[$other]; + } + + /** + * Validate that an attribute is different from another attribute. + * + * @param string $attribute + * @param mixed $value + * @param array $parameters + * @return bool + */ + protected function validate_different($attribute, $value, $parameters) + { + $other = $parameters[0]; + + return isset($this->attributes[$other]) and $value != $this->attributes[$other]; + } + /** * Validate that an attribute is numeric. * @@ -727,7 +755,9 @@ protected function attribute($attribute) // If no language line has been specified for the attribute, all of // the underscores will be removed from the attribute name and that // will be used as the attribtue name in the message. - $display = Lang::line("{$bundle}validation.attributes.{$attribute}")->get($this->language); + $line = "{$bundle}validation.attributes.{$attribute}"; + + $display = Lang::line($line)->get($this->language); return (is_null($display)) ? str_replace('_', ' ', $attribute) : $display; }