@@ -52,6 +52,11 @@ class Image extends \Magento\Eav\Model\Entity\Attribute\Backend\AbstractBackend
52
52
*/
53
53
private $ imageUploader ;
54
54
55
+ /**
56
+ * @var string
57
+ */
58
+ private $ additionalData = '_additional_data_ ' ;
59
+
55
60
/**
56
61
* Image constructor.
57
62
*
@@ -80,9 +85,9 @@ public function beforeSave($object)
80
85
{
81
86
$ attributeName = $ this ->getAttribute ()->getName ();
82
87
$ value = $ object ->getData ($ attributeName );
83
- $ imageName = $ this ->getUploadedImageName ($ value );
84
88
85
- if ($ imageName ) {
89
+ if ($ imageName = $ this ->getUploadedImageName ($ value )) {
90
+ $ object ->setData ($ this ->additionalData . $ attributeName , $ value );
86
91
$ object ->setData ($ attributeName , $ imageName );
87
92
} else if (!is_string ($ value )) {
88
93
$ object ->setData ($ attributeName , '' );
@@ -125,15 +130,27 @@ private function getImageUploader()
125
130
}
126
131
127
132
/**
128
- * Save uploaded file and set its name to category.
133
+ * Check if temporary file is available for new image upload.
134
+ *
135
+ * @param array $value
136
+ * @return bool
137
+ */
138
+ private function isTmpFileAvailable ($ value )
139
+ {
140
+ return is_array ($ value ) && isset ($ value [0 ]['tmp_name ' ]);
141
+ }
142
+
143
+ /**
144
+ * Save uploaded file and set its name to category
129
145
*
130
146
* @param \Magento\Framework\DataObject $object
131
147
* @return \Magento\Catalog\Model\Category\Attribute\Backend\Image
132
148
*/
133
149
public function afterSave ($ object )
134
150
{
135
- $ imageName = $ object ->getData ($ this ->getAttribute ()->getName (), null );
136
- if ($ imageName ) {
151
+ $ value = $ object ->getData ($ this ->additionalData . $ this ->getAttribute ()->getName ());
152
+
153
+ if ($ this ->isTmpFileAvailable ($ value ) && $ imageName = $ this ->getUploadedImageName ($ value )) {
137
154
try {
138
155
$ this ->getImageUploader ()->moveFileFromTmp ($ imageName );
139
156
} catch (\Exception $ e ) {
0 commit comments