17 votes

Comment ajouter un attribut de façon programmatique

Je voudrais ajouter un attribut aux produits, et je veux le faire de manière programmatique. J'ai donc ajouté un fichier mysql-install-0.1.0.php à l'un de mes modules, et j'ai ajouté ceci (inspiré d'exemples existants) :

startSetup();

$installateur->addAttribute('catalog_product', 'collection', array(
        'type'              => 'varchar',
        'backend'           => '',
        'frontend'          => '',
        'label'             => 'Collection',
        'input'             => 'text',
        'class'             => '',
        'source'            => '',
        'global'            => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
        'visible'           => false,
        'required'          => false,
        'user_defined'      => false,
        'default'           => '',
        'searchable'        => false,
        'filterable'        => false,
        'comparable'        => false,
        'visible_on_front'  => false,
        'unique'            => false,
        'apply_to'          => '',
        'is_configurable'   => false
    ));

$installateur->endSetup();

La syntaxe semble correcte, mais lors de l'exécution de cette partie du code, voici le problème :

Erreur fatale : Appel à la méthode indéfinie Mage_Core_Model_Resource_Setup::addAttribute() dans /home/frleq/Dev/projets/AVIP/WORKSPACE/avip_magento/app/code/local/Smile/Magentaho/sql/magentaho_setup/mysql4-install-0.1.0.php à la ligne 7

Voyez-vous ce qui ne va pas ? Le code n'est pas si compliqué, et il est inspiré de ceux qui fonctionnent déjà...

Merci

28voto

Vous utilisez la mauvaise classe de configuration. Veuillez vérifier la déclaration de votre classe de configuration dans config.xml. Vous utilisez Mage_Core_Model_Resource_Setup. Essayez plutôt Mage_Eav_Model_Entity_Setup.

13voto

Roman Snitko Points 2653

Si vous souhaitez utiliser des options liées aux produits (filtrables, recherchables, etc.), vous devriez utiliser la classe Mage_Catalog_Model_Resource_Eav_Mysql4_Setup.

Dans les versions récentes de Magento, vous devriez utiliser la classe Mage_Catalog_Model_Resource_Setup.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X