Skip to content
This repository was archived by the owner on Jan 30, 2020. It is now read-only.

Commit 811e747

Browse files
committed
Merge pull request #61
2 parents 26da9df + ff75895 commit 811e747

File tree

4 files changed

+57
-4
lines changed

4 files changed

+57
-4
lines changed

src/ArrayInput.php

+3-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,9 @@ public function isValid($context = null)
7070
}
7171

7272
if (! $hasValue && $required) {
73-
$this->setErrorMessage('Value is required');
73+
if ($this->errorMessage === null) {
74+
$this->errorMessage = $this->prepareRequiredValidationFailureMessage();
75+
}
7476
return false;
7577
}
7678

src/FileInput.php

+3-1
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,9 @@ public function isValid($context = null)
124124
}
125125

126126
if (! $hasValue && $required && ! $this->hasFallback()) {
127-
$this->setErrorMessage('Value is required');
127+
if ($this->errorMessage === null) {
128+
$this->errorMessage = $this->prepareRequiredValidationFailureMessage();
129+
}
128130
return false;
129131
}
130132

src/Input.php

+17-1
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,9 @@ public function isValid($context = null)
403403
}
404404

405405
if (! $hasValue && $required) {
406-
$this->setErrorMessage('Value is required');
406+
if ($this->errorMessage === null) {
407+
$this->errorMessage = $this->prepareRequiredValidationFailureMessage();
408+
}
407409
return false;
408410
}
409411

@@ -481,4 +483,18 @@ protected function injectNotEmptyValidator()
481483

482484
$chain->prependValidator(new NotEmpty(), true);
483485
}
486+
487+
/**
488+
* Create and return the validation failure message for required input.
489+
*
490+
* @return string[]
491+
*/
492+
protected function prepareRequiredValidationFailureMessage()
493+
{
494+
$notEmpty = new NotEmpty();
495+
$templates = $notEmpty->getOption('messageTemplates');
496+
return [
497+
NotEmpty::IS_EMPTY => $templates[NotEmpty::IS_EMPTY],
498+
];
499+
}
484500
}

test/InputTest.php

+34-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
use Zend\InputFilter\Input;
1818
use Zend\InputFilter\InputInterface;
1919
use Zend\Validator;
20+
use Zend\Validator\NotEmpty;
2021
use Zend\Validator\ValidatorChain;
2122

2223
/**
@@ -34,6 +35,21 @@ public function setUp()
3435
$this->input = new Input('foo');
3536
}
3637

38+
public function assertRequiredValidationErrorMessage($input, $message = '')
39+
{
40+
$message = $message ?: 'Expected failure message for required input';
41+
$message .= ';';
42+
43+
$messages = $input->getMessages();
44+
$this->assertInternalType('array', $messages, $message . ' non-array messages array');
45+
46+
$notEmpty = new NotEmpty();
47+
$messageTemplates = $notEmpty->getOption('messageTemplates');
48+
$this->assertSame([
49+
NotEmpty::IS_EMPTY => $messageTemplates[NotEmpty::IS_EMPTY],
50+
], $messages, $message . ' missing NotEmpty::IS_EMPTY key and/or contains additional messages');
51+
}
52+
3753
public function testConstructorRequiresAName()
3854
{
3955
$this->assertEquals('foo', $this->input->getName());
@@ -172,7 +188,24 @@ public function testRequiredWithoutFallbackAndValueNotSetThenFail()
172188
$input->isValid(),
173189
'isValid() should be return always false when no fallback value, is required, and not data is set.'
174190
);
175-
$this->assertEquals(['Value is required'], $input->getMessages(), 'getMessages() value not match');
191+
$this->assertRequiredValidationErrorMessage($input);
192+
}
193+
194+
/**
195+
* @group 28
196+
* @group 60
197+
*/
198+
public function testRequiredWithoutFallbackAndValueNotSetProvidesNotEmptyValidatorIsEmptyErrorMessage()
199+
{
200+
$input = $this->input;
201+
$input->setRequired(true);
202+
203+
$this->assertFalse(
204+
$input->isValid(),
205+
'isValid() should always return false when no fallback value is present, '
206+
. 'the input is required, and no data is set.'
207+
);
208+
$this->assertRequiredValidationErrorMessage($input);
176209
}
177210

178211
public function testNotRequiredWithoutFallbackAndValueNotSetThenIsValid()

0 commit comments

Comments
 (0)