This seems to be a Magento bug, but I'm not sure, since I'm not a PHP developer, it can only display Magento and PHP for installation on windows
change this file
\app\code\core\Mage\Catalog\Model\Product\Api\V2.php
line 57-62
foreach ($filters->complex_filter as $_filter) { $_value = $_filter->value; $preparedFilters[$_filter->key] = array( $_value->key => $_value->value ); }
to
foreach ($filters->complex_filter as $_field => $_filter) { $preparedFilters[$_field] = array( $_filter->key => $_filter->value ); }
I also notice that in another V2.php file this piece of code is written differently. The client API is the same as the product, but the order API is written as follows:
foreach ($filters->complex_filter as $_filter) { $_value = $_filter->value; if(is_object($_value)) { $preparedFilters[][$_filter->key] = array( $_value->key => $_value->value ); } elseif(is_array($_value)) { $preparedFilters[][$_filter->key] = array( $_value['key'] => $_value['value'] ); } else { $preparedFilters[][$_filter->key] = $_value; } }
can anyone indicate the correct use of an array in PHP?
source share