Get Backend Base Url in JS file Magento 2?

You can get base URL of the backend/admin panel in javascript(JS) file to fetch Custom URL of a site to call ajax request in backend area.

‘mage/url’ widget is not used to fetch backend base URL in Magento 2.

You need to create a template file using layout XML and define the base URL of the backend under the template file. Continue reading “Get Backend Base Url in JS file Magento 2?”

How to add custom tab in admin Sales Order view magento 2?

In Magento 2, Sales Order Page in the admin panel, Many Tabs are available by native like Information, Invoices, Shipments, Credit Memos, Transactions and comment history.

For your custom requirement, you need to add extra tab in Order page, You can add your custom tab in Admin Order View page by just simple module.

Continue reading “How to add custom tab in admin Sales Order view magento 2?”

Magento 2 – How to get multiselect option in system configuration using system.xml.

Using below demo we can get multiselect option using system.xml.
For Example, We will get all Customer group of a system and display all the customer group by system.xml in System -> Configuration Section of admin.
Create system.xml file,
Path,   app/code/<Vendorname>/<Modulename>/etc/adminhtml/system.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Config:etc/system_file.xsd">
    <system>
        <section id="catalog">
            <group id="customer_group" translate="label" type="text" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
                <field id="list" translate="label" type="multiselect" sortOrder="3" showInDefault="1" showInWebsite="1" showInStore="0">
                    <label>Customer Groups</label>
                    <source_model>Vendorname\Modulename\Model\Adminhtml\System\Config\Source\Customer\Group</source_model>
                    <can_be_empty>1</can_be_empty>
                </field>
            </group>
        </section>
    </system>
</config>

You need to get the collection of all customer group using a Model file. Create Model file in your module. You can define your model php file using source_model tag in system.xml file.

Create Group.php file,
Path, app/code/<Vendorname>/<Modulename>/Model/Adminhtml/System/Config/Source/Customer/Group.php

<?php
namespace Vendorname\Modulename\Model\Adminhtml\System\Config\Source\Customer;

class Group implements \Magento\Framework\Option\ArrayInterface
{
    public function __construct(\Magento\Customer\Model\ResourceModel\Group\CollectionFactory $groupCollectionFactory)
    {
        $this->_groupCollectionFactory = $groupCollectionFactory;
    }

    /**
     * @return array
     */
    public function toOptionArray()
    {
        if (!$this->_options) {
            $this->_options = $this->_groupCollectionFactory->create()->loadData()->toOptionArray();
        }
        return $this->_options;
    }
}

Clear Cache using php bin/magento cache:flush

Now You can get the list of customer group in your section with multi-select option.
If you want to get the list of all selected option in PHP file,

<?php
namespace Vendorname\Modulename\Helper;

class Data extends \Magento\Framework\App\Helper\AbstractHelper
{
    public function __construct(
        \Magento\Framework\App\Helper\Context $context
    ) {
        $this->scopeConfig = $context->getScopeConfig();
        parent::__construct($context);
    }
    /**
     * Get Customer group selected list
     */
    public function getCustomerGroupList() {
        $list = $this->scopeConfig->getValue("catalog/customer_group/list",
                \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
        return $list !== null ? explode(',', $list) : [];
    }

Using the above way you can list of all customer group selected in a Configuration section. The result will be a value of all selected customer group with comma separated.