8
8
use Magento \SalesRule \Model \ResourceModel \Rule \Collection ;
9
9
use Magento \SalesRule \Model \ResourceModel \Rule \CollectionFactory ;
10
10
use Magento \SalesRule \Model \Rule ;
11
+ use Magento \Framework \App \Request \DataPersistorInterface ;
11
12
12
13
/**
13
14
* Class DataProvider
@@ -35,6 +36,11 @@ class DataProvider extends \Magento\Ui\DataProvider\AbstractDataProvider
35
36
* @var \Magento\SalesRule\Model\Rule\Metadata\ValueProvider
36
37
*/
37
38
protected $ metadataValueProvider ;
39
+
40
+ /**
41
+ * @var DataPersistorInterface
42
+ */
43
+ private $ dataPersistor ;
38
44
39
45
/**
40
46
* Initialize dependencies.
@@ -45,6 +51,7 @@ class DataProvider extends \Magento\Ui\DataProvider\AbstractDataProvider
45
51
* @param CollectionFactory $collectionFactory
46
52
* @param \Magento\Framework\Registry $registry
47
53
* @param Metadata\ValueProvider $metadataValueProvider
54
+ * @param DataPersistorInterface $dataPersistor
48
55
* @param array $meta
49
56
* @param array $data
50
57
*/
@@ -55,13 +62,17 @@ public function __construct(
55
62
CollectionFactory $ collectionFactory ,
56
63
\Magento \Framework \Registry $ registry ,
57
64
\Magento \SalesRule \Model \Rule \Metadata \ValueProvider $ metadataValueProvider ,
65
+ DataPersistorInterface $ dataPersistor = null ,
58
66
array $ meta = [],
59
67
array $ data = []
60
68
) {
61
69
$ this ->collection = $ collectionFactory ->create ();
62
70
$ this ->coreRegistry = $ registry ;
63
71
$ this ->metadataValueProvider = $ metadataValueProvider ;
64
72
$ meta = array_replace_recursive ($ this ->getMetadataValues (), $ meta );
73
+ $ this ->dataPersistor = $ dataPersistor ?? \Magento \Framework \App \ObjectManager::getInstance ()->get (
74
+ DataPersistorInterface::class
75
+ );
65
76
parent ::__construct ($ name , $ primaryFieldName , $ requestFieldName , $ meta , $ data );
66
77
}
67
78
@@ -93,6 +104,13 @@ public function getData()
93
104
94
105
$ this ->loadedData [$ rule ->getId ()] = $ rule ->getData ();
95
106
}
107
+ $ data = $ this ->dataPersistor ->get ('sale_rule ' );
108
+ if (!empty ($ data )) {
109
+ $ rule = $ this ->collection ->getNewEmptyItem ();
110
+ $ rule ->setData ($ data );
111
+ $ this ->loadedData [$ rule ->getId ()] = $ rule ->getData ();
112
+ $ this ->dataPersistor ->clear ('sale_rule ' );
113
+ }
96
114
97
115
return $ this ->loadedData ;
98
116
}
0 commit comments