From db6d49baf63328b48ed71dd1bcfb76cc92bd1a59 Mon Sep 17 00:00:00 2001 From: Kilte Date: Tue, 7 Jan 2014 00:08:09 +0400 Subject: [PATCH 1/3] Fix #33 Validation for length - Message is incorrect for between cases --- src/Valitron/Validator.php | 15 +++++++++++++++ tests/Valitron/ValidateTest.php | 4 ++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/Valitron/Validator.php b/src/Valitron/Validator.php index 82fd830..b8c4428 100644 --- a/src/Valitron/Validator.php +++ b/src/Valitron/Validator.php @@ -139,6 +139,21 @@ class Validator return $this->validateRequired($field, $value) && in_array($value, $acceptable, true); } + /** + * Validate the length of a string + * + * @param string $filed + * @param mixed $value + * @param array $params + * + * @return boolean + */ + protected function validateLengthBetween($filed, $value, $params) + { + $length = $this->stringLength($value); + return $length >= $params[0] && $length <= $params[1]; + } + /** * Validate that a field is numeric * diff --git a/tests/Valitron/ValidateTest.php b/tests/Valitron/ValidateTest.php index 34f8cca..dce9829 100644 --- a/tests/Valitron/ValidateTest.php +++ b/tests/Valitron/ValidateTest.php @@ -136,14 +136,14 @@ class ValidateTest extends BaseTestCase public function testLengthBetweenValid() { $v = new Validator(array('str' => 'happy')); - $v->rule('length', 'str', 2, 8); + $v->rule('lengthBetween', 'str', 2, 8); $this->assertTrue($v->validate()); } public function testLengthBetweenInvalid() { $v = new Validator(array('str' => 'sad')); - $v->rule('length', 'str', 4, 10); + $v->rule('lengthBetween', 'str', 4, 10); $this->assertFalse($v->validate()); } From 807ff8b1153b64b4bccc1513dfe6642547d1a1cd Mon Sep 17 00:00:00 2001 From: Kilte Date: Tue, 7 Jan 2014 00:08:32 +0400 Subject: [PATCH 2/3] Update translations --- lang/en.php | 1 + lang/ru.php | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/lang/en.php b/lang/en.php index 4cdf2dc..d2f3a0b 100644 --- a/lang/en.php +++ b/lang/en.php @@ -25,6 +25,7 @@ return array( 'dateAfter' => "must be date after '%s'", 'contains' => "must contain %s", 'boolean' => "must be a boolean", + 'lengthBetween' => "must be between %d and %d characters" ); diff --git a/lang/ru.php b/lang/ru.php index 3dfa0a9..0a8e818 100644 --- a/lang/ru.php +++ b/lang/ru.php @@ -19,10 +19,11 @@ return array( 'alphaNum' => "должно содержать только латинские символы и/или цифры", 'slug' => "должно содержать только латинские символы, цифры, тире и подчёркивания", 'regex' => "содержит недопустимые символы", - 'date' => "не являтся датой", + 'date' => "не является датой", 'dateFormat' => "должно содержать дату следующего формата: %s", 'dateBefore' => "должно содержать дату не позднее, чем %s", 'dateAfter' => "должно содержать дату не ранее, чем %s", 'contains' => "должно содержать %s", 'boolean' => "должно содержать логическое значение", + 'lengthBetween' => "должно содержать от %d до %d символов" ); \ No newline at end of file From d55305268bdc166b02d3e76005afcc8ff55a8a96 Mon Sep 17 00:00:00 2001 From: Kilte Date: Tue, 7 Jan 2014 00:08:45 +0400 Subject: [PATCH 3/3] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6496d70..62a0641 100644 --- a/README.md +++ b/README.md @@ -90,7 +90,8 @@ V::lang('ar'); * `accepted` - Checkbox or Radio must be accepted (yes, on, 1, true) * `numeric` - Must be numeric * `integer` - Must be integer number - * `length` - String must be certain length or between given lengths + * `length` - String must be certain length + * `lengthBetween` - String must be between given lengths * `min` - Minimum * `max` - Maximum * `in` - Performs in_array check on given array values