Petite astuce que je viens de découvrir sur le net.
J’avais un script vraiment très simple qui ne voulait pas marcher, et je n’arrivais pas à comprendre pourquoi (et j’aime pas ça…
). Il s’agit de charger un produit dans son composant Model, de modifier un attribut, puis de l’enregistrer:
$model = Mage::getModel('catalog/product')->load(1);
$model->setData("name", 'Chaussettes');
$model->save();
J’avais placé ce code dans une méthode Action pour y accéder rapidement.
Malheureusement, cela me sortait toujours la même erreur: Warning: Invalid argument supplied for foreach() in …\app\code\core\Mage\Eav\Model\Entity\Abstract.php on line 1180
En cherchant rapidement sur le net, j’ai découvert que, pour que cela fonctionne, il faut rajouter cette instruction juste avant:
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
J’en déduis que pour qu’une sauvegarde de produit fonctionne, celui-ci doit être rattaché à un magasin, ce qui n’est pas fait par défaut.