php атрибуты - Добавление атрибутов к объекту клиента




2 Answers

Это код для базового атрибута int с помощью средства визуализации 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();

Необычным шагом для добавления атрибутов является setData('used_in_forms') это кажется уникальным для атрибутов клиента. Без этого поле не будет отображаться, конечно же, не в adminhtml. Вы можете увидеть допустимые параметры для этого массива в таблице базы данных customer_form_attribute .

Что касается использования select с предопределенными параметрами, это то, что вам нужно:

$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);

И вот walk-through пользовательский источник для раскрывающегося списка

Надеюсь это поможет,
JD

получить значение

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

Я на Magento CE 1.5.1.0




Просто добавьте свой атрибут клиента под свой настраиваемый файл mysql для настраиваемого модуля через следующий скрипт.

$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");

Следующий сценарий, используемый для использования атрибута клиента

$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();



Related