Este es el código para un atributo básico int
con text
procesador:
$installer = $this;
$installer->startSetup();
$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
$entityTypeId = $setup->getEntityTypeId('customer');
$attributeSetId = $setup->getDefaultAttributeSetId($entityTypeId);
$attributeGroupId = $setup->getDefaultAttributeGroupId($entityTypeId, $attributeSetId);
$setup->addAttribute('customer', 'your_attribute_code_here', array(
'input' => 'text',
'type' => 'int',
'label' => 'Some textual description',
'visible' => 1,
'required' => 0,
'user_defined' => 1,
));
$setup->addAttributeToGroup(
$entityTypeId,
$attributeSetId,
$attributeGroupId,
'your_attribute_code_here',
'999' //sort_order
);
$oAttribute = Mage::getSingleton('eav/config')->getAttribute('customer', 'your_attribute_code_here');
$oAttribute->setData('used_in_forms', array('adminhtml_customer'));
$oAttribute->save();
$setup->endSetup();
El paso inusual para agregar atributos es setData('used_in_forms')
; esto parece ser exclusivo de los atributos del cliente. Sin él, el campo no se renderizará, ciertamente no en el adminhtml de todos modos. Puede ver las opciones válidas para esta matriz en la tabla de la base de datos customer_form_attribute
.
En cuanto al uso de un select
con opciones predefinidas, esto es lo que necesita:
$iAttributeId = $installer->getAttributeId($entityTypeId, 'your_attribute_code_here');
$aClasses = array('TV','DVD','Home Theatre','Air Conditioner','Stereo/Hifi','Game Console','Camcorder','VCR','Set Top Box','PVR');
$aOption = array();
$aOption['attribute_id'] = $iAttributeId;
for($iCount=0;$iCount<sizeof($aClasses);$iCount++){
$aOption['value']['option'.$iCount][0] = $aClasses[$iCount];
}
$setup->addAttributeOption($aOption);
Y aquí es un walk-through sobre el uso de una fuente personalizada para su desplegable
Espero que esto ayude,
JD
gracias por la respuesta, que estaré dando a este un intento.En cuanto a las opciones predefinidas, no deberían ser estáticas en mi caso, pero editables desde la interfaz de administración, es por eso que estaba tratando de hacer uso de la opción 'source' – Zifius
Editado con el enlace para las opciones dinámicas. Mi ejemplo de opciones predefinidas se puede editar en el administrador si está utilizando una versión de Magento que proporciona el Administrador de atributos del cliente, es solo un conjunto inicial. –
Acabo de probar su código y funcionó como un encanto, la llamada addAttributeToGroup fue realmente útil. También configuré la opción de fuente. – Zifius