We use cookies to make your experience better. To comply with the new e-Privacy directive, we need to ask for your consent to set the cookies. Learn more.
How to Create System.xml Configuration in Magento 2
Steps To Create System.xml Configuration in Magento 2
Create System.xml
Directory
app/code/VendorName/ModuleName/etc/adminhtml/system.xml
Content for this file
<?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>
<tab id="tab1" translate="label" sortOrder="10">
<label>Example Tab</label>
</tab>
<section id="exampletab2" translate="label" sortOrder="130" showInDefault="1" showInWebsite="1" showInStore="1">
<class>separator-top</class>
<label>Example Tab2</label>
<tab>tab1</tab>
<resource>VendorName_ModuleName::exampletab2_config</resource>
<group id="general" translate="label" type="text" sortOrder="10" showInDefault="1" showInWebsite="0" showInStore="0">
<label>General Configuration</label>
<field id="enable" translate="label" type="select" sortOrder="1" showInDefault="1" showInWebsite="0" showInStore="0">
<label>Module Enable</label>
<source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
</field>
<field id="display_text" translate="label" type="text" sortOrder="1" showInDefault="1" showInWebsite="0" showInStore="0">
<label>Display Text</label>
<comment>This text will display on the frontend.</comment>
</field>
</group>
</section>
</system>
</config>
Set Default value
Directory
app/code/VendorName/ModuleName/etc/config.xml
Content for this file
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
<default>
<exampletab2>
<general>
<enable>1</enable>
<display_text>Example Tab2</display_text>
</general>
</exampletab2>
</default>
</config>
Flush Magento Cache
Please refresh your cache to check the result
Get value from the configuration
Simple calling
$this->scopeConfig->getValue('exampletab2/general/enable', \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
$this->scopeConfig->getValue('exampletab2/general/display_text', \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
Create a helper file (standard)
app/code/VendorName/ModuleName/Helper/Data.php
<?php
namespace VendorName\ModuleName\Helper;
use Magento\Framework\App\Helper\AbstractHelper;
use Magento\Store\Model\ScopeInterface;
class Data extends AbstractHelper
{
const XML_PATH_ModuleName = 'modulename/';
public function getConfigValue($field, $storeId = null)
{
return $this->scopeConfig->getValue(
$field, ScopeInterface::SCOPE_STORE, $storeId
);
}
public function getGeneralConfig($code, $storeId = null)
{
return $this->getConfigValue(self::XML_PATH_ModuleName .'general/'. $code, $storeId);
}
}
Now, we try in controller
app/code/VendorName/ModuleName/Controller/Index/Config.php
<?php
namespace VendorName\ModuleName\Controller\Index;
class Config extends \Magento\Framework\App\Action\Action
{
protected $helperData;
public function __construct(
\Magento\Framework\App\Action\Context $context,
\Mageplaza\HelloWorld\Helper\Data $helperData
)
{
$this->helperData = $helperData;
return parent::__construct($context);
}
public function execute()
{
// TODO: Implement execute() method.
echo $this->helperData->getGeneralConfig('enable');
echo $this->helperData->getGeneralConfig('display_text');
exit();
}
}
Now, run command to clean cache:
php bin/magento cache:clean
If you are looking for Magento Developers, visit Magento Web Agency.