2014-01-11 1 views
1

Я создал свой собственный модуль и хотите, чтобы вызвать метод updateAttributes:Magento updateAttributes не работает в собственных модулях IndexController

Mage::getSingleton('catalog/product_action') ->updateAttributes(array($product_id), array('sku','123'), 0);

Я получаю следующее сообщение об ошибке: Фатальная ошибка: Вызов члена function getAttributeId() на не-объекте в [...]/httpdocs/app/code/core/Mage/Catalog/Model/Resource/Product/Action.php в строке 69

Как получить доступ к этому методу ? Большое вам спасибо!

ответ

0

Как мы обновляем атрибуты продукта, традиционный подход заключается в следующем:

<?php 
//Load the Product 
$product = Mage::getModel('catalog/product')->load($product_id)); //By ID 
$product = Mage::getModel('catalog/product')->loadByAttribute('sku', $oldSku);//By SKU 
//Update product attributes via Setters 
$product->setSku($newSku); 
$product->setName('New product name'); 
$product->setShortDescription(addslashes("short description here.")); 
$product->setDescription(addslashes("long description")); 
//Perform Save 
$product->save(); 
?> 

пожалуйста, просмотрите следующие в другой ссылке: Magento getSingleton() vs getModel() issue

- Обновление -

Двойная проверка синтаксис массива для передаваемых атрибутов.

<?php 
Mage::getSingleton('catalog/product_action') 
->updateAttributes(array(
$data['product_id']), 
array("sku" => $data['sku'], 'price' => $data['price']), 
$storeId); 
?> 
+0

Спасибо за этот ответ. Я не хочу делать это таким образом, потому что у меня есть> 30 атрибутов. Вот почему мне нравится идея нажимать их как массив в функцию updateAttributes-Function. – user2492687

Смежные вопросы