2012-06-19 28 views
5

Öznitelikler oluşturmak ve bunları varolan öznitelik kümelerine atamak çözülmüş bir sorundur, ancak bir öznitelik kümesi oluşturmaya ve varsayılanla doldurmaya çalışan bir sorunla karşılaşıyoruz ve belirli öznitelikleri başarısız oluyor. Bu kullanımda kodudur:Magento kurulum komut dosyasında öznitelik kümesi oluştur

$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(); 
Ben reklamı olarak initfromSkeleton yöntem ancak save() sonra, varsayılan attribute_set gelen yüklemelerini olmadığını içinden ayıklama yoluyla doğrulayabilir

, yeni dizi boştur.

Küme için yeni öznitelikler eklemek mümkündür, bu nedenle var olur ve doğru şekilde oluşturulur, ancak eksik varsayılan öznitelikleri, SKU, fiyat, ad vb. Tüm gerekli olduğundan kullanılamaz hale getirir.

cevap

5

kere senin initSkeleton() çağırmadan önce ve bir kez ondan sonra nitelik iki kez, set kaydetmek gerekir ki ayarlanan varsayılan niteliğe dayalı olarak nitelik setleri oluşturma ile sorunu olduğunu hatırlıyorum.

Artık tam sebebini hatırlamıyorum, çok uzun zaman önce. Neyse, işte benim için çalıştı budur:

// 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

teşekkürler Jurgen, bunu deneyecek. Bir Magento nesnesinin modifikasyonlardan önce kaydedilmesi gereken, mantıklı olmayan ama kesinlikle mümkün olduğu başka örnekleri gördüm. –

+0

İki kez kaydetme benim için gerçek sorun oldu. Cevap için teşekkürler! – Yorrd

0

o kurulum sınıfı böylece

$oEntitySetup->getEntityTypeId('catalog_product'); 

çağrılabilir

Mage_Catalog_Model_Resource_Eav_Mysql4_Setup 

uzatmak gerekiyor lütfen unutmayın.

0

Çalıştığım Jürgen Thelen yanıtını kullandım.

Ama yeni özellik ('catalog_product' 'varsayılan') bu tür Yani $ Installer-> getAttributeSetId dahil bu tur almak için

genel olarak ve fatura vb varsayılan seçenekler ve seçenekler grup yoktu set bulundu initFromSkeleton()

if($attributeSet->validate()) { 
$attributeSet 
    ->save() 
    ->initFromSkeleton($installer->getAttributeSetId('catalog_product', 'default')) 
    ->save(); 
} else { 
die('Attributeset with name ' . $setName . ' already exists.'); 
}