From a8e8b75ea7bc77919968300410b9739e7e6076f8 Mon Sep 17 00:00:00 2001 From: hugome Date: Thu, 16 Feb 2017 01:10:41 +0100 Subject: [PATCH] Add replaceDimensions for validator messages * Added tests for that --- .../Concerns/ReplacesAttributes.php | 21 +++++++++++++++++++ tests/Validation/ValidationValidatorTest.php | 20 ++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/src/Illuminate/Validation/Concerns/ReplacesAttributes.php b/src/Illuminate/Validation/Concerns/ReplacesAttributes.php index 8e2cca843336..3e5b50a13a75 100644 --- a/src/Illuminate/Validation/Concerns/ReplacesAttributes.php +++ b/src/Illuminate/Validation/Concerns/ReplacesAttributes.php @@ -355,4 +355,25 @@ protected function replaceAfterOrEqual($message, $attribute, $rule, $parameters) { return $this->replaceBefore($message, $attribute, $rule, $parameters); } + + /** + * Replace all place-holders for the dimensions rule. + * + * @param string $message + * @param string $attribute + * @param string $rule + * @param array $parameters + * @return string + */ + protected function replaceDimensions($message, $attribute, $rule, $parameters) + { + $nesteds = $this->parseNamedParameters($parameters); + if (is_array($nesteds)) { + foreach ($nesteds as $key => $value) { + $message = str_replace(':'.$key, $value, $message); + } + } + + return $message; + } } diff --git a/tests/Validation/ValidationValidatorTest.php b/tests/Validation/ValidationValidatorTest.php index e24787bfa62e..ade0f9215d84 100755 --- a/tests/Validation/ValidationValidatorTest.php +++ b/tests/Validation/ValidationValidatorTest.php @@ -215,6 +215,26 @@ public function testClassBasedCustomReplacers() $this->assertEquals('replaced!', $v->messages()->first('name')); } + public function testNestedAttributesAreReplacedInDimensions() + { + // Knowing that demo image.gif has width = 3 and height = 2 + $uploadedFile = new \Symfony\Component\HttpFoundation\File\UploadedFile(__DIR__.'/fixtures/image.gif', '', null, null, null, true); + + $trans = $this->getIlluminateArrayTranslator(); + $trans->addLines(['validation.dimensions' => ':min_width :max_height :ratio'], 'en'); + $v = new Validator($trans, ['x' => $uploadedFile], ['x' => 'dimensions:min_width=10,max_height=20,ratio=1']); + $v->messages()->setFormat(':message'); + $this->assertTrue($v->fails()); + $this->assertEquals('10 20 1', $v->messages()->first('x')); + + $trans = $this->getIlluminateArrayTranslator(); + $trans->addLines(['validation.dimensions' => ':width :height :ratio'], 'en'); + $v = new Validator($trans, ['x' => $uploadedFile], ['x' => 'dimensions:min_width=10,max_height=20,ratio=1']); + $v->messages()->setFormat(':message'); + $this->assertTrue($v->fails()); + $this->assertEquals(':width :height 1', $v->messages()->first('x')); + } + public function testAttributeNamesAreReplaced() { $trans = $this->getIlluminateArrayTranslator();