Skip to content

[Bug in code] Attribute with JSON. Module: magento2-hyva-checkout

hyva-themes/magento2-hyva-checkout:1.1.10

If the $value contains some JSON, you may encounter issues with the attribute tag.

For example, if $value = {"test": 1} and $attribute = 'test', the code will produce:test="{"test": 1}". It's incorrect.

vendor/hyva-themes/magento2-hyva-checkout/src/Model/Form/EntityConcern/WithAttributes.php:110

 return implode(' ', array_map(function ($attribute, ?string $value) use ($escaper) {
            return $value === null ? $attribute : sprintf('%s="%s"', $attribute, $escaper ? $escaper->escapeHtmlAttr($value) : $value);
        }, array_keys($attributes), array_values($attributes)));

Patch for fix it.

Index: vendor/hyva-themes/magento2-hyva-checkout/src/Model/Form/EntityConcern/WithAttributes.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/vendor/hyva-themes/magento2-hyva-checkout/src/Model/Form/EntityConcern/WithAttributes.php b/vendor/hyva-themes/magento2-hyva-checkout/src/Model/Form/EntityConcern/WithAttributes.php
--- a/vendor/hyva-themes/magento2-hyva-checkout/src/Model/Form/EntityConcern/WithAttributes.php	
+++ b/vendor/hyva-themes/magento2-hyva-checkout/src/Model/Form/EntityConcern/WithAttributes.php	(date 1724166350832)
@@ -108,7 +108,7 @@
         }
 
         return implode(' ', array_map(function ($attribute, ?string $value) use ($escaper) {
-            return $value === null ? $attribute : sprintf('%s="%s"', $attribute, $escaper ? $escaper->escapeHtmlAttr($value) : $value);
+            return $value === null ? $attribute : sprintf("%s='%s'", $attribute, $escaper ? $escaper->escapeHtmlAttr($value) : $value);
         }, array_keys($attributes), array_values($attributes)));
     }
 }
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information