2012-06-19 11 views
5

विशेषताएँ बनाना और उन्हें मौजूदा विशेषता सेट में असाइन करना एक हल समस्या है, लेकिन हम एक विशेषता सेट बनाने और इसे डिफ़ॉल्ट रूप से पॉप्युलेट करने के लिए एक समस्या में भाग रहे हैं और विशिष्ट विशेषताओं में असफल रहा है। इस प्रयोग में कोड है:Magento सेटअप स्क्रिप्ट

$setup->addAttributeSet('catalog_product', 'women_sizing_denim'); 

$oAttributeSetModel = Mage::getModel("eav/entity_attribute_set") 
     ->load($setup->getAttributeSetId('catalog_product', 'women_sizing_denim')) 
     ->initFromSkeleton($setup->getAttributeSetId('catalog_product', 'default')) 
     ->save(); 

मैं के माध्यम से डिबगिंग कि initfromSkeleton विधि के रूप में विज्ञापित डिफ़ॉल्ट attribute_set से गुण लोड करता है, लेकिन save() के बाद से सत्यापित कर सकते हैं, नया सेट खाली है।

सेट में नए गुण जोड़ना संभव है, इसलिए यह अस्तित्व में है और सही तरीके से बनाया गया है, लेकिन अनुपलब्ध डिफ़ॉल्ट विशेषताएँ इसे अनुपयोगी बनाती हैं क्योंकि एसकेयू, मूल्य, नाम इत्यादि सभी आवश्यक हैं।

उत्तर

5

मुझे याद है कि डिफ़ॉल्ट विशेषता निर्धारित के आधार पर विशेषता सेट बनाने के साथ इस मुद्दे था, कि आप को बचाने के लिए एक बार initSkeleton() कॉल करने से पहले और इसके बाद एक बार विशेषता निर्धारित दो बार, की जरूरत है।

मुझे अब सटीक कारण याद नहीं है, यह बहुत समय पहले है। वैसे भी, यहाँ क्या मेरे लिए काम किया है:

// Mage_Eav_Model_Entity_Setup 
$oEntitySetup = $this; 
$oEntitySetup->startSetup(); 

$sNewSetName = 'myset'; 
$iCatalogProductEntityTypeId = (int) $oEntitySetup->getEntityTypeId('catalog_product'); 

$oAttributeset = Mage::getModel('eav/entity_attribute_set') 
    ->setEntityTypeId($iCatalogProductEntityTypeId) 
    ->setAttributeSetName($sNewSetName); 

if ($oAttributeset->validate()) { 
    $oAttributeset 
     ->save() 
     ->initFromSkeleton($iCatalogProductEntityTypeId) 
     ->save(); 
} 
else { 
    die('Attributeset with name ' . $sNewSetName . ' already exists.'); 
} 

$oEntitySetup->endSetup(); 
+0

धन्यवाद जुर्गन, यह कोशिश करेगा। मैंने अन्य उदाहरणों को देखा है जहां संशोधनों से पहले एक Magento ऑब्जेक्ट को सहेजने की आवश्यकता है, यह तार्किक नहीं है, लेकिन निश्चित रूप से संभव है! –

+0

दो बार सहेजना मेरे लिए असली मुद्दा था। जवाब के लिए धन्यवाद! – Yorrd

0

कृपया ध्यान दें सेटअप वर्ग

Mage_Catalog_Model_Resource_Eav_Mysql4_Setup 

ताकि

$oEntitySetup->getEntityTypeId('catalog_product'); 

कहा जा सकता है विस्तार करने के लिए की जरूरत है।

0

मैंने जुर्गन थेलेन उत्तर का उपयोग किया जो काम करता था।

लेकिन मैं नई विशेषता ('catalog_product', 'डिफ़ॉल्ट') सेट को सामान्य जैसे और चालान आदि

तो इस दौर पाने के लिए $ installer-> getAttributeSetId शामिल डिफ़ॉल्ट विकल्प और विकल्प समूह नहीं था पाया initFromSkeleton()

if($attributeSet->validate()) { 
$attributeSet 
    ->save() 
    ->initFromSkeleton($installer->getAttributeSetId('catalog_product', 'default')) 
    ->save(); 
} else { 
die('Attributeset with name ' . $setName . ' already exists.'); 
} 
संबंधित मुद्दे