add item to cart with addition option console error Unable to unserialize value
-
01-03-2021 - |
Question
i am trying to add product to cart with addition option but i ended up with message: "Unable to unserialize value."
this error on console resoponse on section refresh.
I am using checkout_cart_product_add_after
event and observer code like below.
$item = $observer->getQuoteItem();
$additionalOptions = array();
if ($additionalOption = $item->getOptionByCode('additional_options')) {
$additionalOptions = (array) unserialize($additionalOption->getValue());
}
$additionalOptions[] = [
'label' => 'Additional Options Label',
'value' => 'Additional Options Value',
];
if (count($additionalOptions) > 0) {
$item->addOption(array(
'product_id' => $item->getProductId(),
'code' => 'additional_options',
'value' => serialize($additionalOptions),
));
}
Solution
Use json_encode
instead serialize
public function execute(EventObserver $observer) {
$additionalOptions = array();
if ($additionalOption = $item->getOptionByCode('additional_options')) {
$additionalOptions = (array) unserialize($additionalOption->getValue());
}
$additionalOptions[] = [
'label' => 'helllo',
'value' => 'vaddfsd',
];
if (count($additionalOptions) > 0) {
$item->addOption(array(
'code' => 'additional_options',
'value' => json_encode($additionalOptions),
));
}
}
OTHER TIPS
A lot of previously serlialised stuff in m2 is now json encoded. Try json decode instead?
Licensed under: CC-BY-SA with attribution
Not affiliated with magento.stackexchange