8

I am importing some customers with :

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();

        $customerFactory = $objectManager->create('\Magento\Customer\Model\CustomerFactory');


        $customer = $objectManager->create('Magento\Customer\Model\Customer')->setWebsiteId(1)->loadByEmail('[email protected]');


        try {
            if(!empty($customer->getData('email')))
            {
                $customer->setAttr1(1); // Attr1 = Name of the custom Attribute 
                $customer->setAttr2(2); // Attr2 = Name of the custom Attribute 
            }
            else
            {
                $customer = $customerFactory->create()->setWebsiteId(1);
            }


            $customer->setLastname("Lastname");

            $customer->setFirstname("Firsty");

            .....

            $customer->save();

The customer is saved with all his standard attributes correctly but my new attributes won't be saved anyway. I've also tried :

$customer->setCustomAttribute('Attr1','value');

but this didn't work too.

The custom Attribute are shown correclty in Magentos 2 backoffice and the values are saved correctly too if creating a customer manually.

1
  • 1
    Share the code which you used to create customer attribute. Commented Nov 7, 2016 at 4:44

2 Answers 2

3

Have you tried:

$customer-> setData('Attr1','value');

and don't forget to save and log the information:

try {
    $customer->save();
} catch (\Exception $e) {
    // log exception so you can debug the issue if there is one
}
Sign up to request clarification or add additional context in comments.

Comments

0
<?php

namespace Custom\Module\Setup;

use Magento\Eav\Model\Config;
use Magento\Eav\Setup\EavSetup;
use Magento\Eav\Setup\EavSetupFactory;
use Magento\Framework\Setup\InstallDataInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;

class InstallData implements InstallDataInterface 
{
    private $eavSetupFactory;

    public function __construct(
        EavSetupFactory $eavSetupFactory,
        Config $eavConfig
    ) {
        $this->eavSetupFactory = $eavSetupFactory;
        $this->eavConfig = $eavConfig;
    }

    public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context) 
    {
        $eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);

        $eavSetup->addAttribute(\Magento\Customer\Model\Customer::ENTITY, 'custom_attribute', [
                'label' => 'Label',
                'system' => 0,
                'position' => 720,
                'sort_order' => 720,
                'visible' => true,
                'note' => '',
                'type' => 'int',
                'input' => 'boolean',
                'source' => 'Magento\Eav\Model\Entity\Attribute\Source\Boolean',
                'backend' => \Custom\Module\Model\Customer\Attribute\Backend\DoWHatEver::class,
            ]
        );

        $attribute = $this->getEavConfig()->getAttribute(\Magento\Customer\Model\Customer::ENTITY, 'custom_attribute');
        $attribute->addData([
                'is_user_defined' => 1,
                'is_required' => 0,
                'default_value' => 0,
                'used_in_forms', ['adminhtml_customer']
            ])->save();
    }
    
    public function getEavConfig() 
    {
        return $this->eavConfig;
    }
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.