File tree Expand file tree Collapse file tree 1 file changed +19
-1
lines changed
app/code/Magento/Eav/Model/Entity/Attribute/Backend Expand file tree Collapse file tree 1 file changed +19
-1
lines changed Original file line number Diff line number Diff line change @@ -41,7 +41,7 @@ public function beforeSave($object)
41
41
{
42
42
// parent::beforeSave() is not called intentionally
43
43
$ attrCode = $ this ->getAttribute ()->getAttributeCode ();
44
- if ($ object ->hasData ($ attrCode ) && !is_string ( $ object ->getData ($ attrCode ))) {
44
+ if ($ object ->hasData ($ attrCode ) && !$ this -> isJsonEncoded (( string ) $ object ->getData ($ attrCode ))) {
45
45
$ object ->setData ($ attrCode , $ this ->jsonSerializer ->serialize ($ object ->getData ($ attrCode )));
46
46
}
47
47
return $ this ;
@@ -61,4 +61,22 @@ public function afterLoad($object)
61
61
$ object ->setData ($ attrCode , $ this ->jsonSerializer ->unserialize ($ object ->getData ($ attrCode ) ?: '{} ' ));
62
62
return $ this ;
63
63
}
64
+
65
+ /**
66
+ * Returns true if given param is a valid json value else false.
67
+ *
68
+ * @param string $value
69
+ * @return bool
70
+ */
71
+ private function isJsonEncoded (string $ value ): bool
72
+ {
73
+ $ result = true ;
74
+ try {
75
+ $ this ->jsonSerializer ->unserialize ($ value );
76
+ } catch (\InvalidArgumentException $ e ) {
77
+ $ result = false ;
78
+ }
79
+
80
+ return $ result ;
81
+ }
64
82
}
You can’t perform that action at this time.
0 commit comments