Skip to content

Commit 3f742ea

Browse files
author
Paul M. Jones
committed
Merge pull request #40 from kenjis/add_multi_msg
Add support for adding messages in closure rules
2 parents 3d313b6 + 0362bcf commit 3f742ea

2 files changed

Lines changed: 55 additions & 5 deletions

File tree

src/Aura/Input/Filter.php

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,12 @@ public function values(&$values)
8181
// note that it is in an array, so that other implementations
8282
// can allow for multiple messages.
8383
if (! $passed) {
84-
$this->messages[$field][] = $message;
84+
if (! isset($this->messages[$field])) {
85+
$this->messages[$field][] = $message;
86+
} else {
87+
// the message should be first.
88+
array_unshift($this->messages[$field], $message);
89+
}
8590
}
8691
}
8792

@@ -125,9 +130,13 @@ public function getMessages($field = null)
125130
*/
126131
public function addMessages($field, $messages)
127132
{
128-
$this->messages[$field] = array_merge(
129-
$this->messages[$field],
130-
(array) $messages
131-
);
133+
if (! isset($this->messages[$field])) {
134+
$this->messages[$field][] = $messages;
135+
} else {
136+
$this->messages[$field] = array_merge(
137+
$this->messages[$field],
138+
(array) $messages
139+
);
140+
}
132141
}
133142
}

tests/Aura/Input/FilterTest.php

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,4 +99,45 @@ public function testAll()
9999
$passed = $this->filter->values($values);
100100
$this->assertTrue($passed);
101101
}
102+
103+
public function testMultipleErrorMessages()
104+
{
105+
// initial data
106+
$values = (object) [
107+
'foo' => '',
108+
];
109+
110+
// set the rule of 'foo'
111+
$filter = new Filter;
112+
$filter->setRule(
113+
'foo',
114+
'Enter Foo correctly',
115+
function ($value) use ($filter) {
116+
$pass = true;
117+
if ($value == '') {
118+
$filter->addMessages('foo', 'Foo is required');
119+
$pass = false;
120+
}
121+
122+
if (! ctype_alpha($value)) {
123+
$filter->addMessages('foo', 'Foo should be alpha only');
124+
$pass = false;
125+
}
126+
return $pass;
127+
}
128+
);
129+
130+
// do the values pass the filter?
131+
$passed = $filter->values($values);
132+
$this->assertFalse($passed);
133+
134+
// get 'foo' messages
135+
$actual = $filter->getMessages('foo');
136+
$expect = [
137+
'Enter Foo correctly',
138+
'Foo is required',
139+
'Foo should be alpha only',
140+
];
141+
$this->assertSame($expect, $actual);
142+
}
102143
}

0 commit comments

Comments
 (0)