php magento attributes entity-attribute-value

php - crear conjunto de atributos en la secuencia de comandos de configuración de Magento



attributes entity-attribute-value (3)

Crear atributos y asignarlos a conjuntos de atributos existentes es un problema resuelto, pero nos encontramos con un problema al intentar crear un conjunto de atributos y poblarlo con atributos predeterminados y específicos que están fallando. Este es el código en uso:

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

Puedo verificar depurando que el método initfromSkeleton carga los atributos del attribute_set predeterminado como se anuncia, sin embargo después del save() , el nuevo conjunto está vacío.

Es posible agregar nuevos atributos al conjunto, por lo que existe y se crea correctamente, pero los atributos predeterminados faltantes lo hacen inutilizable ya que se requieren SKU, precio, nombre, etc.


Recuerdo que el problema con la creación de conjuntos de atributos basados ​​en el conjunto de atributos predeterminado era que necesita guardar el conjunto de atributos dos veces , una antes de llamar a initSkeleton() y una vez después.

Ya no recuerdo la razón exacta, hace mucho tiempo. De todos modos, esto es lo que funcionó para mí:

// 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();


Tenga en cuenta que la clase de instalación necesita extenderse

Mage_Catalog_Model_Resource_Eav_Mysql4_Setup

así que eso

$oEntitySetup->getEntityTypeId(''catalog_product'');

puede ser llamado.


Usé la respuesta de Jürgen Thelen que funcionó.

Pero encontré que el nuevo conjunto de atributos no tenía las opciones predeterminadas y el grupo de opciones, como generales y de facturación, etc.

Para evitar esto, incluya $ installer-> getAttributeSetId (''catalog_product'', ''default'') en el initFromSkeleton ()

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