File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff 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}
Original file line number Diff line number Diff 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}
You can’t perform that action at this time.
0 commit comments