Come ottenere il valore dell'attributo del cliente?
-
30-10-2019 - |
Domanda
Quello che voglio
- Aggiungi l'attributo del cliente
- Mostra il nuovo attributo nella pagina anteriore (dashboard)
Problema
Ho creato l'attributo cliente con questo codice di seguito:
<?php
define('MAGENTO', realpath(dirname(__FILE__)));
require_once MAGENTO . '/app/Mage.php';
Mage::app();
$installer = new Mage_Customer_Model_Entity_Setup('core_setup');
$installer->startSetup();
$vCustomerEntityType = $installer->getEntityTypeId('customer');
$vCustAttributeSetId = $installer->getDefaultAttributeSetId($vCustomerEntityType);
$vCustAttributeGroupId = $installer->getDefaultAttributeGroupId($vCustomerEntityType, $vCustAttributeSetId);
$installer->addAttribute('customer', 'manager', array(
'label' => 'Account Manager',
'input' => 'text',
'type' => 'varchar',
'forms' => array('customer_account_edit','customer_account_create','adminhtml_customer','checkout_register'),
'visible' => true,
'global' => true,
'visible_on_front' => 1,
'required' => false,
'default_value' => 'default',
'user_defined' => true,
));
$installer->addAttributeToGroup($vCustomerEntityType, $vCustAttributeSetId, $vCustAttributeGroupId, 'manager', 0);
$oAttribute = Mage::getSingleton('eav/config')->getAttribute('customer', 'manager');
$oAttribute->setData('used_in_forms', array('customer_account_edit','customer_account_create','adminhtml_customer','checkout_register'));
$oAttribute->save();
echo "DONE";
exit;
E poi, questa parte era normalmente funzionante. Posso trovare un nuovo modulo nel backend e posso aggiornare il modulo con nuovi dati. Finora è andato bene, ma non sono riuscito a ottenere i dati nella sezione in prima pagina.
Quando ho cercato questo problema, il codice seguente sembra funzionare normalmente ma non funzionava per me.
Ho messo sotto il codice in /app/design/frontend/<Theme>/default/template/customer/account/dashboard.phtml
.
$attr = $this->getCustomer()->getAttribute('manager')->getData($customer);
// not working
$customer = Mage::getSingleton('customer/session')->getCustomer();
$attr = $customer->getAttribute('manager')->getData($customer);
// not working
$_customerModel = Mage::getModel('customer/customer');
$_customer = $customerModel->load($this->getCustomer()->getId());
$attr = $_customer->getAttribute('manager')->getData($_customer);
// Yeah, still not working
$attr = $this->getCustomer()->getAttribute('manager')->getData('manager');
// not working but getData('firstname') is working
Penso che l'attributo personalizzato non sia stato completamente caricato quando il cliente è stato caricato. Inoltre sembra essere un problema con la nuova versione di Magento. Non sono riuscito a trovare lo stesso problema da nessuna parte.
Posso ottenere i dati con la forza come la connessione direttamente al database o mi manca qualcosa in questo codice?
Nessuna soluzione corretta