usar texto significa quiere que incluir imagen funciĆ³n explique definicion decir con como colocar atributo alternativo agregar php magento custom-attributes

php - texto - que significa atributo alt



Agregar atributos a la entidad del cliente (4)

Este es el código para un atributo int básico con renderizador de text :

$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'') 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 términos de usar 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í hay un walk-through sobre el uso de una fuente personalizada para su menú desplegable

Espero que esto ayude,
JD

Mi objetivo actual es agregar un nuevo atributo de cliente (con tipo de int ) que debería aparecer como select con opciones predefinidas (cargadas desde un modelo con entradas editables en backend, lo cual está hecho). Estoy luchando con el uso adecuado del método $installer->addAttribute() , especialmente especificando la opción de fuente correcta. Otro problema es que el nuevo atributo no se guarda en la tabla eav_entity_attribute

Estoy en Magento CE 1.5.1.0


La respuesta de @Janathan Day es genial y me ayudó muchísimo. Sin embargo, siempre que haya configurado su clase de setup en Mage_Customer_Model_Entity_Setup , Magento puede hacer todo el trabajo por usted:

<!-- config.xml Example --> <?xml version="1.0"?> <config> <global> <resources> <acme_module_setup> <setup> <module>Acme_Module</module> <class>Mage_Customer_Model_Entity_Setup</class> </setup> <connection> <use>core_setup</use> </connection> </acme_module_setup> </resources> </global> </config>

Y aquí está el mysql4-install-XXXphp :

<?php $installer = $this; /* @var $installer Mage_Customer_Model_Entity_Setup */ $installer->startSetup(); $installer->addAttribute( ''customer'', ''acme_imported'', array( ''group'' => ''Default'', ''type'' => ''int'', ''label'' => ''Imported into Acme'', ''input'' => ''select'', ''source'' => ''eav/entity_attribute_source_boolean'', ''global'' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE, ''required'' => 0, ''default'' => 0, ''visible_on_front'' => 1, ''used_for_price_rules'' => 0, ''adminhtml_only'' => 1, ) ); $installer->endSetup();

El adminhtml_only anterior manejará toda la lógica de used_in_forms para usted. Además, el group definición se encargará de asignarlo al grupo de atributos.


La solución proporcionada por alex y puerro trabajó para mí. Solo tengo que agregar la función setter en nuestro AccountController.php

$customer->setProfession($this->getRequest()->getPost(''profession'')) ->save(); // Added for updating Profession

Donde "profesión" era mi atributo personalizado.


Solo tiene que agregar el atributo de cliente debajo del archivo de instalación de mysql del módulo personalizado a través del siguiente script.

$installer = $this; $installer->startSetup(); $installer->addAttribute("customer", "yourattributename", array( "type" => "int", "backend" => "", "label" => "Bad Customer", "input" => "select", "source" => "eav/entity_attribute_source_boolean", "visible" => true, "required" => false, "default" => "", "frontend" => "", "unique" => false, "note" => "" )); $attribute = Mage::getSingleton("eav/config")->getAttribute("customer", "yourattributename");

El siguiente script utilizado para donde quiera usar el atributo del cliente

$used_in_forms=array(); $used_in_forms[]="adminhtml_customer"; $attribute->setData("used_in_forms", $used_in_forms) ->setData("is_used_for_customer_segment", true) ->setData("is_system", 0) ->setData("is_user_defined", 1) ->setData("is_visible", 0) ->setData("sort_order", 100) ; $attribute->save(); $installer->endSetup();