News:

Looking for documentation? Take a look on our wiki

Main Menu

Product update error!

Started by Naveen Kumar, March 17, 2017, 21:27:14 PM

Previous topic - Next topic

Naveen Kumar

Hello, everyone, I got stuck with something that I have never experienced before. Okay, problem is that when I try to select multivariant for the products and hit save it works wonderfully well and the value I am trying to save is updated. But when I try to update the same product second time around I came up with the following errors below:

On the backend I see:
Fatal error: Cannot use object of type stdClass as array in /home/XXXXXXXXXX/XXXXXXXXX/administrator/components/com_virtuemart/models/customfields.php on line 312

Front end:
Fatal error: Cannot use object of type stdClass as array in /home/XXXXXX/XXXXXX/templates/fire/html/com_virtuemart/sublayouts/customfield.php on line 114


Thank You.

GJC Web Design

GJC Web Design
VirtueMart and Joomla Developers - php developers https://www.gjcwebdesign.com
VM4 AusPost Shipping Plugin - e-go Shipping Plugin - VM4 Postcode Shipping Plugin - Radius Shipping Plugin - VM4 NZ Post Shipping Plugin - AusPost Estimator
Samport Payment Plugin - EcomMerchant Payment Plugin - ccBill payment Plugin
VM2 Product Lock Extension - VM2 Preconfig Adresses Extension - TaxCloud USA Taxes Plugin - Virtuemart  Product Review Component
https://extensions.joomla.org/profile/profile/details/67210
Contact for any VirtueMart or Joomla development & customisation

Naveen Kumar

My bad!

I should have mentioned it in the first place.

VM 3.0.18
Joomla 3.6.5

Thanks

Naveen Kumar

Hello any update here?

In addition to my previous post "I am not able get the values of my own custom field created in cart." Error I get "com_virtuemart/sublayouts/customfield.php  ------------- line no --------736"

Here is code below if we comment this line of code it is working fine but not able to populate/show custom  field value in cart list.

/* if(!empty($productCustom->selectoptions[$k]->clabel) and in_array($productCustom->selectoptions[$k]->voption,VirtueMartModelCustomfields::$dimensions)){
                                    $value .= vmText::_('COM_VIRTUEMART_'.$productCustom->selectoptions[$k]->voption);
                                    $rd = $productCustom->selectoptions[$k]->clabel;
                                    if(is_numeric($rd) and is_numeric($option)){
                                        $value .= ' '.number_format(round((float)$option,(int)$rd),$rd);
                                    }
                                } else {
                                    if(!empty($productCustom->selectoptions[$k]->clabel)) $value .= vmText::_($productCustom->selectoptions[$k]->clabel);
                                    $value .= ' '.vmText::_($option).' ';
                                } */



Thanks

GJC Web Design

GJC Web Design
VirtueMart and Joomla Developers - php developers https://www.gjcwebdesign.com
VM4 AusPost Shipping Plugin - e-go Shipping Plugin - VM4 Postcode Shipping Plugin - Radius Shipping Plugin - VM4 NZ Post Shipping Plugin - AusPost Estimator
Samport Payment Plugin - EcomMerchant Payment Plugin - ccBill payment Plugin
VM2 Product Lock Extension - VM2 Preconfig Adresses Extension - TaxCloud USA Taxes Plugin - Virtuemart  Product Review Component
https://extensions.joomla.org/profile/profile/details/67210
Contact for any VirtueMart or Joomla development & customisation

Naveen Kumar

Hello,

Thanks for the response.

But it didn't work.

Any suggestions please ?

lica

Hi,
the problem is that when you change the ramifications of the multivariat associated to a product the link between the child products and the corresponding variants is transformed from a simple array to an associative one, since you may remove the second ramification out of three and you need the kay to keep the correct correspondence between the actual left ramifications and the values for each child. At db these is translated to a json object. When data is again retrieved the json object is parsed to a php stdClass object instead that an associative array.

Since in all the code the result is treated as an array when it gets an object it raises a fatal error.

Theoretically if json_decode is used to parse the data from db it would be sufficient to pass as second parameter TRUE in order to get as result an associative array and not a stdClass object: http://php.net/manual/en/function.json-decode.php

Unfortunately I wasn't able to identify the exact point where to fix this, for know I just fix this by transforming the stdClass object into an associative array when I get the error.

I've just checked VM 3.2.14.9808 and the bug persists, hope will be fixed in next release.