Skip to content

Commit 7850bc7

Browse files
committed
fix: loading saved data from sessionData
1 parent 572cfb7 commit 7850bc7

File tree

1 file changed

+19
-3
lines changed

1 file changed

+19
-3
lines changed

src/ManyField.php

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -588,7 +588,8 @@ public function FieldList() {
588588

589589
if ($this->value) {
590590
foreach ($this->value as $record) {
591-
$output->push($this->generateRow($index++, $record));
591+
$row = $this->generateRow($index++, $record);
592+
$output->push($row);
592593
}
593594
} else {
594595
// display one if none exist.
@@ -655,13 +656,28 @@ public function generateRow($index, $value = null, $prefixName = true)
655656

656657
foreach ($this->manyChildren as $child) {
657658
$field = clone $child;
659+
$originalName = $field->name;
658660
$field = $this->updateManyNestedField($field, $index, $value, $prefixName);
659661

660662
$field = $field->setReadonly($this->readonly);
661663
$field = $field->setDisabled($this->readonly);
662664

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+
}
665681
}
666682

667683
if ($field) {

0 commit comments

Comments
 (0)