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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top