Skip to content

Commit 2391f3a

Browse files
authored
Merge pull request #1634 from craftcms/bugfix/1607-matrix-default-values-and-other-arrays-v6
only assign default values if we have the block field info
2 parents b18de87 + 6377f0a commit 2391f3a

File tree

1 file changed

+25
-25
lines changed

1 file changed

+25
-25
lines changed

src/fields/Matrix.php

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,31 @@ public function parseField(): mixed
101101
} else {
102102
$fieldData[$key] = $parsedValue;
103103
}
104+
105+
foreach ($blocks as $blockHandle => $fields) {
106+
if (isset($fields['fields'])) {
107+
foreach ($fields['fields'] as $fieldHandle => $fieldInfo) {
108+
$node = Hash::get($fieldInfo, 'node');
109+
if ($node === 'usedefault') {
110+
$key = $this->_getBlockKey($nodePathSegments, $blockHandle, $fieldHandle);
111+
112+
$parsedValue = DataHelper::fetchSimpleValue($this->feedData, $fieldInfo);
113+
$fieldData[$key] = $parsedValue;
114+
}
115+
}
116+
}
117+
if (isset($fields['attributes'])) {
118+
foreach ($fields['attributes'] as $fieldHandle => $fieldInfo) {
119+
$node = Hash::get($fieldInfo, 'node');
120+
if ($node === 'usedefault') {
121+
$key = $this->_getBlockKey($nodePathSegments, $blockHandle, $fieldHandle);
122+
123+
$parsedValue = DataHelper::fetchSimpleValue($this->feedData, $fieldInfo);
124+
$attributeData[$key] = $parsedValue;
125+
}
126+
}
127+
}
128+
}
104129
}
105130

106131
if ($attributeInfo) {
@@ -117,31 +142,6 @@ public function parseField(): mixed
117142
$attributeData[$key] = $parsedValue;
118143
}
119144
}
120-
121-
foreach ($blocks as $blockHandle => $fields) {
122-
if (isset($fields['fields'])) {
123-
foreach ($fields['fields'] as $fieldHandle => $fieldInfo) {
124-
$node = Hash::get($fieldInfo, 'node');
125-
if ($node === 'usedefault') {
126-
$key = $this->_getBlockKey($nodePathSegments, $blockHandle, $fieldHandle);
127-
128-
$parsedValue = DataHelper::fetchSimpleValue($this->feedData, $fieldInfo);
129-
$fieldData[$key] = $parsedValue;
130-
}
131-
}
132-
}
133-
if (isset($fields['attributes'])) {
134-
foreach ($fields['attributes'] as $fieldHandle => $fieldInfo) {
135-
$node = Hash::get($fieldInfo, 'node');
136-
if ($node === 'usedefault') {
137-
$key = $this->_getBlockKey($nodePathSegments, $blockHandle, $fieldHandle);
138-
139-
$parsedValue = DataHelper::fetchSimpleValue($this->feedData, $fieldInfo);
140-
$attributeData[$key] = $parsedValue;
141-
}
142-
}
143-
}
144-
}
145145
}
146146

147147
// Handle some complex fields that don't directly have nodes, but instead have nested properties mapped.

0 commit comments

Comments
 (0)