[php] Добавление атрибутов к объекту клиента


Answers

@ Ответ Джонатана Дэйна велик и очень помог мне. Однако - пока вы установили свой класс setup в Mage_Customer_Model_Entity_Setup , Magento может выполнить всю эту работу за вас:

<!-- 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>

И вот 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();

В adminhtml_only выше adminhtml_only обрабатывается вся used_in_forms логика used_in_forms . Кроме того, определяющая group позаботится о назначении ее группе атрибутов.

Question

моя текущая цель - добавить новый атрибут клиента (с типом int ), который должен появиться как выбор с предопределенными параметрами (загружен из модели с записями, редактируемыми в бэкэнд, что и делается). Я изо всех сил стараюсь использовать метод $installer->addAttribute() , особенно указывая правильный вариант источника. Другая проблема заключается в том, что новый атрибут не сохраняется в таблице eav_entity_attribute

Я на Magento CE 1.5.1.0




Решение, предлагаемое alex и leek, работало для меня. Только мне нужно добавить функцию setter в наш AccountController.php

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

Где «профессия» была моим обычным атрибутом.




Related