Сохраните пользовательский атрибут в объекте клиента для всех клиентов - PullRequest
0 голосов
/ 07 января 2020

Я создал пользовательский атрибут в объекте клиента. Я вижу пользовательский атрибут в моей таблице eav_attribute.

Но я не могу получить атрибут в коде, пока я не сохраню его из панели администратора.

Мой сценарий, который создал пользовательский атрибут:

<?php

$installer = $this;
$installer->startSetup();
$entityTypeId     = (int)$installer->getEntityTypeId('customer');
$attributeSetId   = (int)$installer->getDefaultAttributeSetId($entityTypeId);
$attributeGroupId = (int)$installer->getDefaultAttributeGroupId($entityTypeId, $attributeSetId);

$installer->addAttribute( $entityTypeId, 'whatsapp_status', array(
    'type'               => 'int',
    'label'              => 'Whatsapp Status',
    'input'              => 'select',
    'forms'              => array('adminhtml_customer'),
    'source'             => 'dbaux_customer/source_whatsappOption',
    'required'           => false,
    'visible'            => 1,
    'position'           => 110,
    'default'            => 'Inactive',
));

$installer->addAttributeToGroup($entityTypeId, $attributeSetId, $attributeGroupId, 'whatsapp_status', 100);

$oAttribute = Mage::getSingleton('eav/config')->getAttribute('customer', 'whatsapp_status');
$oAttribute->setData('used_in_forms', array('adminhtml_customer'));
$oAttribute->save();

$installer->endSetup();

И когда я пытаюсь получить значение атрибута для любого клиента, я получаю нулевое значение. Код:

$customer  = Mage::getModel('customer/customer')->load($customer_id);
$attributeValue  = $customer->getWhatsappStatus(); //coming as NULL

Но если я сохраню значение в панели администратора, то получу правильное значение вместо нуля.

Итак, есть ли способ добавить новый атрибут? со значением по умолчанию для всех клиентов без сохранения поля из админ-панели

1 Ответ

0 голосов
/ 07 января 2020

Вот некоторый код. Вы можете go с помощью приведенного ниже кода и соответствующим образом построить свой атрибут.

/ app / code / local / Your / Customattribute / sql / your_customattribute_setup / install-0.1.0. php

<?php
$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", "customattribute",  array(
"type"     => "varchar",
"backend"  => "",
"label"    => "Custom Attribute",
"input"    => "text",
"source"   => "",
"visible"  => true,
"required" => false,
"default" => "",
"frontend" => "",
"unique"     => false,
"note"       => "Custom Attribute"
));

$attribute   = Mage::getSingleton("eav/config")->getAttribute("customer",     "customattribute");

$setup->addAttributeToGroup(
$entityTypeId,
$attributeSetId,
$attributeGroupId,
'customattribute',
'999'  //sort_order
);

$used_in_forms=array();

$used_in_forms[]="adminhtml_customer";
//$used_in_forms[]="checkout_register";
//$used_in_forms[]="customer_account_create";
//$used_in_forms[]="customer_account_edit";
//$used_in_forms[]="adminhtml_checkout";
    $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", 1)
            ->setData("sort_order", 100)
            ;
    $attribute->save();



$installer->endSetup();

/ app / code / local / Your / Customattribute / etc / config. xml

<?xml version="1.0"?>
    <config>
    <modules>
        <Your_Customattribute>
            <version>0.1.0</version>
        </Your_Customattribute>
    </modules>
    <global>

        <resources>
            <Your_Customattribute_setup>
                <setup>
                    <module>Your_Customattribute</module>
                    <class>Mage_Customer_Model_Entity_Setup</class>
                </setup>
                <connection>
                    <use>core_setup</use>
                </connection>
            </Your_Customattribute_setup>
            <Your_Customattribute_write>
                <connection>
                    <use>core_write</use>
                </connection>
            </Your_Customattribute_write>
            <Your_Customattribute_read>
                <connection>
                    <use>core_read</use>
                </connection>
            </Your_Customattribute_read>
        </resources>
    </global>

</config>

app / etc / modules / Your_Customattribute. xml

<?xml version="1.0"?>
    <config>
        <modules>
            <Your_Customattribute>
            <active>true</active>
            <codePool>local</codePool>
            <version>0.1.0</version>
        </Your_Customattribute>
    </modules>
</config>

Затем, чтобы получить или отредактировать, вы используете:

$customer = Mage::getModel('customer/customer')->load($custid);
$customer->getCustomattribute();
$customer->setCustomattribute($yourjson);

Надеюсь, этот код поможет вам.

...