Я пытаюсь программно обновить цену продукта в рамках настраиваемого модуля. Это мой код:Программно обновлять цену продукта в Magento - Недопустимый аргумент, предоставленный foreach()
Mage::setIsDeveloperMode(true); // for debug only
try
{
$product = Mage::getModel('catalog/product')->load($productId);
$product->setPrice($newPrice);
$product->save();
}
catch (Exception $ex)
{
echo "Error: ". $ex->getMessage();
}
При выполнении этого кода, я получаю следующее исключение:
Warning: Invalid argument supplied for foreach() in /home/www-data/public_html/app/code/core/Mage/Eav/Model/Entity/Abstract.php on line 1180
В файле system.log
, я вижу, выделяют из этих записей:
2016-03-17T18:01:06+00:00 ERR (3): Warning: Invalid argument supplied for foreach() in /home/www-data/public_html/app/code/core/Mage/Eav/Model/Entity/Abstract.php on line 1180 2016-03-17T18:01:06+00:00 ERR (3): Recoverable Error: Argument 3 passed to Mage_Catalog_Model_Resource_Abstract::_canUpdateAttribute() must be of the type array, null given, called in /home/www-data/public_html/app/code/core/Mage/Eav/Model/Entity/Abstract.php on line 1225 and defined in /home/www-data/public_html/app/code/core/Mage/Catalog/Model/Resource/Abstract.php on line 543 2016-03-17T18:01:06+00:00 ERR (3): Recoverable Error: Argument 3 passed to Mage_Eav_Model_Entity_Abstract::_canUpdateAttribute() must be of the type array, null given, called in /home/www-data/public_html/app/code/core/Mage/Catalog/Model/Resource/Abstract.php on line 545 and defined in /home/www-data/public_html/app/code/core/Mage/Eav/Model/Entity/Abstract.php on line 1254 2016-03-17T18:01:06+00:00 ERR (3): Warning: array_key_exists() expects parameter 2 to be array, null given in /home/www-data/public_html/app/code/core/Mage/Eav/Model/Entity/Abstract.php on line 1256
Любой идея, что может быть причиной этого? Тот же код на моей настройке dev magento работает, но в производстве magento эта ошибка начала появляться, поэтому я немного запутался.
'должен быть типа array, null given' ... так что вы идете. вы передали null, чтобы что-то ожидало массив. –
@MarcB уже проверяет '$ newPrice', он не является нулевым и не должен быть массивом. Ошибка у меня запуталась, потому что она настолько случайна. – Latheesan