@@ -473,10 +473,10 @@ public function testNestedValidatorErrors()
473473 $ expected = [ 'username ' => [ 'Required ' ] ];
474474 $ this ->assertEquals ($ expected , $ context ->error ('user ' ));
475475
476- $ expected = [ 'Required ' ];
476+ $ expected = ['Required ' ];
477477 $ this ->assertEquals ($ expected , $ context ->error ('user.username ' ));
478478
479- $ expected = [ 'Required ' ];
479+ $ expected = ['Required ' ];
480480 $ this ->assertEquals ([], $ context ->error ('comments.0 ' ));
481481 $ this ->assertEquals ($ expected , $ context ->error ('comments.0.comment ' ));
482482 $ this ->assertEquals ($ expected , $ context ->error ('comments.2.comment ' ));
@@ -523,6 +523,43 @@ public function testErrorAssociatedHasMany()
523523 $ this ->assertEquals ([], $ context ->error ('comments.1.article_id ' ));
524524 }
525525
526+ /**
527+ * Test errors for structured fields.
528+ *
529+ * @return void
530+ */
531+ public function testErrorNestedFields ()
532+ {
533+ $ row = new Article ([
534+ 'name ' => [
535+ 'ja ' => [
536+ ['family_name ' => 'XX ' , 'given_name ' => 'YY ' ],
537+ ],
538+ 'en ' => [
539+ ['family_name ' => 'ZZ ' , 'given_name ' => 'AA ' ],
540+ ]
541+ ]
542+ ]);
543+ $ row ->setError ('name ' , [
544+ 'ja ' => [
545+ ['family_name ' => ['_empty ' => 'Invalid value ' ]]
546+ ]
547+ ]);
548+
549+ $ articles = $ this ->setupIndex ();
550+ $ context = new DocumentContext (
551+ $ this ->request ,
552+ [
553+ 'entity ' => $ row ,
554+ 'table ' => $ articles ,
555+ 'validator ' => 'default ' ,
556+ ]
557+ );
558+ $ this ->assertEquals (['_empty ' => 'Invalid value ' ], $ context ->error ('name.ja.0.family_name ' ));
559+ $ this ->assertEquals ([], $ context ->error ('name.derp.0.family_name ' ));
560+ $ this ->assertEquals ([], $ context ->error ('name.derp.0.undefined ' ));
561+ }
562+
526563 /**
527564 * Test getting fieldnames.
528565 *
0 commit comments