3
3
* Copyright © Magento, Inc. All rights reserved.
4
4
* See COPYING.txt for license details.
5
5
*/
6
+
7
+ declare (strict_types=1 );
8
+
6
9
namespace Magento \Theme \Model \Design ;
7
10
8
11
use Magento \Framework \App \Config \Value ;
11
14
use Magento \Theme \Model \Design \Config \MetadataProvider ;
12
15
use Magento \Theme \Model \ResourceModel \Design \Config \CollectionFactory ;
13
16
17
+ /**
18
+ * Class BackendModelFactory
19
+ */
14
20
class BackendModelFactory extends ValueFactory
15
21
{
16
22
/**
@@ -58,13 +64,15 @@ public function __construct(
58
64
*/
59
65
public function create (array $ data = [])
60
66
{
67
+ $ storedData = $ this ->getStoredData ($ data ['scope ' ], $ data ['scopeId ' ], $ data ['config ' ]['path ' ]);
68
+
61
69
$ backendModelData = array_replace_recursive (
62
- $ this -> getStoredData ( $ data [ ' scope ' ], $ data [ ' scopeId ' ], $ data [ ' config ' ][ ' path ' ]) ,
70
+ $ storedData ,
63
71
[
64
72
'path ' => $ data ['config ' ]['path ' ],
65
73
'scope ' => $ data ['scope ' ],
66
74
'scope_id ' => $ data ['scopeId ' ],
67
- 'field_config ' => $ data ['config ' ],
75
+ 'field_config ' => $ data ['config ' ]
68
76
]
69
77
);
70
78
@@ -76,6 +84,13 @@ public function create(array $data = [])
76
84
$ backendModel = $ this ->getNewBackendModel ($ backendType , $ backendModelData );
77
85
$ backendModel ->setValue ($ data ['value ' ]);
78
86
87
+ if ($ storedData ) {
88
+ foreach ($ storedData as $ key => $ value ) {
89
+ $ backendModel ->setOrigData ($ key , $ value );
90
+ }
91
+ $ backendModel ->setOrigData ('field_config ' , $ data ['config ' ]);
92
+ }
93
+
79
94
return $ backendModel ;
80
95
}
81
96
@@ -166,9 +181,12 @@ protected function getMetadata()
166
181
{
167
182
if (!$ this ->metadata ) {
168
183
$ this ->metadata = $ this ->metadataProvider ->get ();
169
- array_walk ($ this ->metadata , function (&$ value ) {
170
- $ value = $ value ['path ' ];
171
- });
184
+ array_walk (
185
+ $ this ->metadata ,
186
+ function (&$ value ) {
187
+ $ value = $ value ['path ' ];
188
+ }
189
+ );
172
190
}
173
191
return $ this ->metadata ;
174
192
}
0 commit comments