diff --git a/README.md b/README.md index 19929e5..0acca86 100644 --- a/README.md +++ b/README.md @@ -127,6 +127,33 @@ V::lang('ar'); ``` +Disabling the {field} name in the output of the error message. + +```php +use Valitron\Validator as V; + +$v = new Valitron\Validator(['name' => 'John']); +$v->rule('required', ['name']); + +// Disable prepending the labels +$v->setPrependLabels(false); + +// Error output for the "false" condition +[ + ["name"] => [ + "is required" + ] +] + +// Error output for the default (true) condition +[ + ["name"] => [ + "name is required" + ] +] + +``` + You can conditionally require values using required conditional rules. In this example, for authentication, we're requiring either a token when both the email and password are not present, or a password when the email address is present. ```php // this rule set would work for either data set... diff --git a/src/Valitron/Validator.php b/src/Valitron/Validator.php index c412119..9b83cec 100644 --- a/src/Valitron/Validator.php +++ b/src/Valitron/Validator.php @@ -83,6 +83,11 @@ class Validator */ protected $stop_on_first_fail = false; + /** + * @var bool + */ + protected $prepend_labels = true; + /** * Setup validation * @@ -144,6 +149,14 @@ public static function langDir($dir = null) return static::$_langDir ?: dirname(dirname(__DIR__)) . '/lang'; } + /** + * @param bool $prepend_labels + */ + public function setPrependLabels($prepend_labels = true) + { + $this->prepend_labels = $prepend_labels; + } + /** * Required field validator * @@ -1471,7 +1484,9 @@ protected function checkAndSetLabel($field, $message, $params) } } } else { - $message = str_replace('{field}', ucwords(str_replace('_', ' ', $field)), $message); + $message = $this->prepend_labels + ? str_replace('{field}', ucwords(str_replace('_', ' ', $field)), $message) + : str_replace('{field} ', '', $message); } return $message; diff --git a/tests/Valitron/ErrorMessagesTest.php b/tests/Valitron/ErrorMessagesTest.php index 583b1dd..ccae921 100644 --- a/tests/Valitron/ErrorMessagesTest.php +++ b/tests/Valitron/ErrorMessagesTest.php @@ -12,6 +12,19 @@ public function testErrorMessageIncludesFieldName() $this->assertSame(array("Name is required"), $v->errors('name')); } + /** + * Test the disabling of prepending the field labels + * to error messages. + */ + public function testErrorMessageExcludeFieldName() + { + $v = new Validator(array()); + $v->setPrependLabels(false); + $v->rule('required', 'name'); + $v->validate(); + $this->assertSame(array("is required"), $v->errors('name')); + } + public function testAccurateErrorMessageParams() { $v = new Validator(array('num' => 5));