Jon*_*Day 5 php attributes magento entity-attribute-value
创建属性并将它们分配给现有属性集是一个已解决的问题,但我们遇到了一个问题,即尝试创建属性集并使用默认属性填充它,并且特定属性失败.这是使用中的代码:
$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();
Run Code Online (Sandbox Code Playgroud)
我可以通过调试验证该initfromSkeleton方法是否按照公布的方式从默认的attribute_set加载属性,但是在之后save(),新的集合为空.
可以在集合中添加新属性,因此它确实存在并且正确创建,但缺少的默认属性使其无法使用,因为SKU,价格,名称等都是必需的.
我记得基于默认属性集创建属性集的问题是,您需要将属性集保存两次,一次是在调用之前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();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5656 次 |
| 最近记录: |