Get "PHP 8 in a Nuthshell" (Soon includes PHP 8.4)
Amit Merchant

Amit Merchant

A blog on PHP, JavaScript, and more

Multiselect-able configuration setting in Magento2

The other day, there was a situation where I needed to implement a multiselect configuration setting in my Magento2 application. So, I thought of documenting the process. So, the scenario was to implement a setting which enlist all the product attribute set and all those can be multiselect-able. Here’s how I did it.

Creating setting in the Admin area

In order to create a new setting in admin area, you’ll need to add the following into the system.xml file of your module which resides under etc/adminhtml.

<field id="product_attribute_set" translate="label comment" type="multiselect" 
sortOrder="41" showInDefault="1" showInWebsite="1" showInStore="1">
    <label>Product Attribute Set</label>
    <source_model>Magento\Catalog\Model\Product\AttributeSet\Options</source_model>
</field>

As you can see, in order to make the setting multiselect-able, you’ll have to set type attribute as “multiselect”. Apart from this, you’ll need to provide a class which will be used to render the options. In my case, it’s Magento\Catalog\Model\Product\AttributeSet\Options which will render products’ attribute set. This is how it would look like.

Product Attribute Set
Product Attribute Set

Consuming the setting

In order access the setting further in your application, you could use \Magento\Framework\App\Config\ScopeConfigInterface and fetch it like so. This is how I did it.

public function __construct(
    \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
){
    $this->scopeConfig = $scopeConfig;
}

public function getAttributeSetConfig()
{
    $productAttributeSet = $this->scopeConfig->getValue('amitmerchant/general/product_attribute_set');
    
    return explode(',', $productAttributeSet);
}

Notice, the option will get returned as a comma separated value. So, you’ll need to use explode or something like that to use it fluently.

Like this article?

Buy me a coffee

👋 Hi there! I'm Amit. I write articles about all things web development. You can become a sponsor on my blog to help me continue my writing journey and get your brand in front of thousands of eyes.

Comments?