After looking for a proper solution on how to create programmatically a multiselect customer attribute along with its entensible options, I haven’t found anything that was good for me:
- In many places it is proposed to create a custom class with the options. That’s not good for me because I want the options to be extensible using a cool module like this (it allows creating customer attributes from backoffice).
- Other solutions I found that should have been enough proposed to use a backend model that would break everything (Magento\Eav\Model\Entity\Attribute\Backend\ArrayBackend).
Well, the final solution that has worked is this one:
$customerSetup->addAttribute(
Customer::ENTITY,
'customer_segment',
[
'label' => 'Segment',
'input' => 'multiselect',
'type' => 'text',
'source' => 'Magento\Eav\Model\Entity\Attribute\Source\Table',
'required' => false,
'position' => 666,
'visible' => true,
'system' => false,
'is_used_in_grid' => true,
'is_visible_in_grid' => true,
'is_filterable_in_grid' => true,
'is_searchable_in_grid' => true,
'backend' => '',
'option' => ['value' =>
[
'option_1'=>[
0 => 'Test 1'
],
'option_2'=>[
0 => 'Test 2'
],
],
'order'=>
[
'option_1' => 1,
'option_2' => 2
]
],
]
);
0 Comments