[php] 고객 엔티티에 속성 추가


1 Answers

@ 조나단 데이 의 대답은 훌륭하고 대단히 도움이되었습니다. 그러나 setup 클래스를 Mage_Customer_Model_Entity_Setup 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_onlyused_in_forms 논리를 모두 처리합니다. 또한 정의 group 은 그것을 정의하여 속성 그룹에 할당합니다.

Question

나의 현재 목표는 미리 정의 된 옵션 (백엔드에서 편집 가능한 항목이있는 모델에서로드 됨, 완료 됨)로 선택 항목으로 표시되어야하는 새로운 고객 속성 ( int 유형 포함)을 추가하는 것입니다. 나는 $installer->addAttribute() 메소드의 올바른 사용법, 특히 올바른 소스 옵션 지정에 어려움을 겪고있다. 다른 문제는 새로운 속성이 eav_entity_attribute 테이블에 저장되지 않는다는 것입니다.

Magento CE 1.5.1.0에 있습니다.




이 솔루션은 알렉스와 부추 모두 나를 위해 일했습니다. 단지 AccountController.php에 setter 함수를 추가해야합니다.

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

"직업"이 내 사용자 정의 속성이었습니다.






Related