2010-08-11 17 views
15

मैं उत्पादों में एक विशेषता जोड़ना चाहता हूं, और मैं इसे प्रोग्रामेटिक रूप से करना चाहता हूं। इसलिए मैं मेरा एक मॉड्यूल के लिए एक mysql से स्थापित-0.1.0.php जोड़ा, और मैं इस (मौजूदा उदाहरण से प्रेरित) कहा:प्रोग्रामेटिक रूप से एक विशेषता जोड़ने के लिए

<?php 

$installer = $this; 

$installer->startSetup(); 

$installer->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 
    )); 

$installer->endSetup(); 

सिंटेक्स ठीक लगता है, लेकिन जब यह के इस भाग को निष्पादित करने के लिए आता है कोड, यहां समस्या है:

Fatal error: Call to undefined method Mage_Core_Model_Resource_Setup::addAttribute() in /home/frleq/Dev/projets/AVIP/WORKSPACE/avip_magento/app/code/local/Smile/Magentaho/sql/magentaho_setup/mysql4-install-0.1.0.php on line 7

क्या आप देखते हैं कि क्या गलत है? कोड इतनी जटिल नहीं है, और यह मौजूदा और worling लोगों से प्रेरित है ...

आप

उत्तर

27

तुम गलत सेटअप वर्ग का उपयोग कर रहे धन्यवाद। Config.xml में अपनी सेटअप क्लास घोषणा की जांच करें। आप Mage_Core_Model_Resource_Setup का उपयोग कर रहे हैं। इसके बजाय Mage_Eav_Model_Entity_Setup आज़माएं।

+2

यह सही है, मैं config.xml में सेटअप वर्ग उल्लेख करना भूल गया: Company_Module Mage_Eav_Model_Entity_Setup धन्यवाद एक बहुत ऐन्डर्स – frinux

+6

नहीं करें! उत्पाद/कैटलॉग विशेषताओं या उनके अतिरिक्त विशेषताओं के संबंध में 'Mage_Eav_Model_Entity_Setup' के बजाय' Mage_Catalog_Model_Resource_Setup' का उपयोग करें ** ** _prepareValues ​​() 'विधि में' _prepareValues ​​() 'विधि के कारण ** ** सेट नहीं किया जाएगा (यानी "is_searchable", "is_visible_on_front" आदि) सेटअप कक्षा। – nevvermind

+1

क्या होगा यदि आपको दोनों का उपयोग करने की आवश्यकता है? – surfer190

12

यदि आप उत्पाद से संबंधित विकल्पों (फ़िल्टर करने योग्य, खोजने योग्य आदि) का उपयोग करना चाहते हैं, तो आपको Mage_Catalog_Model_Resource_Eav_Mysql4_Setup कक्षा का उपयोग करना चाहिए।

Magento के नवीनतम संस्करणों में आपको Mage_Catalog_Model_Resource_Setup कक्षा का उपयोग करना चाहिए।

+1

सर्वश्रेष्ठ उत्तर! उत्पाद विशिष्ट सेटिंग्स जैसे visual_on_front सेट करने में सक्षम होने के लिए, आपको एक Mage_Catalog_ * सेटअप क्लास का उपयोग करना होगा। –

संबंधित मुद्दे