@@ -588,7 +588,8 @@ public function FieldList() {
588
588
589
589
if ($ this ->value ) {
590
590
foreach ($ this ->value as $ record ) {
591
- $ output ->push ($ this ->generateRow ($ index ++, $ record ));
591
+ $ row = $ this ->generateRow ($ index ++, $ record );
592
+ $ output ->push ($ row );
592
593
}
593
594
} else {
594
595
// display one if none exist.
@@ -655,13 +656,28 @@ public function generateRow($index, $value = null, $prefixName = true)
655
656
656
657
foreach ($ this ->manyChildren as $ child ) {
657
658
$ field = clone $ child ;
659
+ $ originalName = $ field ->name ;
658
660
$ field = $ this ->updateManyNestedField ($ field , $ index , $ value , $ prefixName );
659
661
660
662
$ field = $ field ->setReadonly ($ this ->readonly );
661
663
$ field = $ field ->setDisabled ($ this ->readonly );
662
664
663
- if ($ value && is_object ($ value ) && $ value ->hasMethod ('modifyManyRecordField ' )) {
664
- $ field = $ value ->modifyManyRecordField ($ field );
665
+ if ($ value ) {
666
+ if (is_object ($ value ) && $ value ->hasMethod ('modifyManyRecordField ' )) {
667
+ $ field = $ value ->modifyManyRecordField ($ field );
668
+ } else {
669
+ $ value = $ this ->value ;
670
+
671
+ if (is_object ($ value )) {
672
+ $ field = $ field ->setValue ($ value ->{$ field ->name }, $ value );
673
+ } else if (is_array ($ value )) {
674
+ if (isset ($ value [$ originalName ])) {
675
+ $ field = $ field ->setValue ((isset ($ value [$ originalName ][$ index ])) ? $ value [$ originalName ][$ index ] : null );
676
+ } elseif (isset ($ value [$ index ][$ originalName ])) {
677
+ $ field = $ field ->setValue ((isset ($ value [$ index ][$ originalName ])) ? $ value [$ index ][$ originalName ] : null );
678
+ }
679
+ }
680
+ }
665
681
}
666
682
667
683
if ($ field ) {
0 commit comments