@@ -15,29 +15,32 @@ require __DIR__ . '/../bootstrap.php';
1515
1616
1717$ datasets = [
18- ['send1 ' , ['container ' , 'form ' , 'name ' , 'age ' , 'age2 ' ]],
19- ['send2 ' , ['form ' ]],
20- ['send3 ' , ['form ' , 'name ' ]],
21- ['send4 ' , ['form ' , 'age ' ]],
22- ['send5 ' , ['container ' , 'form ' , 'age ' , 'age2 ' ]],
18+ ['send1 ' , ['container ' , 'form ' , 'name ' , 'age ' , 'age2 ' ], null ],
19+ ['send2 ' , ['form ' ], [ ' optional ' => '' , ' details ' => []] ],
20+ ['send3 ' , ['form ' , 'name ' ], null ],
21+ ['send4 ' , ['form ' , 'age ' ], null ],
22+ ['send5 ' , ['container ' , 'form ' , 'age ' , 'age2 ' ], null ],
2323];
2424
2525foreach ($ datasets as $ case ) {
2626 $ form = new Form ;
27- $ form ->onValidate [] = function (Form $ form ) {
27+ $ form ->onValidate [] = function (Form $ form, ? array $ values ) use (& $ values1 ) {
2828 $ form ->addError ('form ' );
29+ $ values1 = $ values ;
2930 };
3031 $ form ->addText ('name ' )->setRequired ('name ' );
32+ $ form ->addText ('optional ' );
3133
3234 $ details = $ form ->addContainer ('details ' );
33- $ details ->onValidate [] = function (Container $ container ) {
35+ $ details ->onValidate [] = function (Container $ container, $ values ) use (& $ values2 ) {
3436 $ container ->getForm ()->addError ('container ' );
37+ $ values2 = $ values ;
3538 };
3639 $ details ->addText ('age ' )->setRequired ('age ' );
3740 $ details ->addText ('age2 ' )->setRequired ('age2 ' );
3841
3942 $ form ->addSubmit ('send1 ' );
40- $ form ->addSubmit ('send2 ' )->setValidationScope ([]);
43+ $ form ->addSubmit ('send2 ' )->setValidationScope ([$ form [ ' optional ' ] ]);
4144 $ form ->addSubmit ('send3 ' )->setValidationScope ([$ form ['name ' ]]);
4245 $ form ->addSubmit ('send4 ' )->setValidationScope ([$ form ['details ' ]['age ' ]]);
4346 $ form ->addSubmit ('send5 ' )->setValidationScope ([$ form ['details ' ]]);
@@ -47,4 +50,7 @@ foreach ($datasets as $case) {
4750 Assert::truthy ($ form ->isSubmitted ());
4851 $ form ->validate ();
4952 Assert::equal ($ case [1 ], $ form ->getErrors ());
53+
54+ Assert::same ($ case [2 ], $ values1 );
55+ Assert::null ($ values2 );
5056}
0 commit comments