Fields added through the system.xml and default values populated with config.xml, how do we fetch the data in Magento2
Asked
Active
Viewed 6.3k times
4 Answers
48
Implementing in a class,
class Dummy
{
/**
* @var \Magento\Framework\App\Config\ScopeConfigInterface
*/
protected $scopeConfig;
/**
* Recipient email config path
*/
const XML_PATH_EMAIL_RECIPIENT = 'contact/email/recipient_email';
public function __construct(\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig)
{
$this->scopeConfig = $scopeConfig;
}
/**
* Sample function returning config value
**/
public function getReceipentEmail() {
$storeScope = \Magento\Store\Model\ScopeInterface::SCOPE_STORE;
return $this->scopeConfig->getValue(self::XML_PATH_EMAIL_RECIPIENT, $storeScope);
}
}
Hope this is helpful!
huzefam
- 2,576
- 4
- 18
- 32
17
Create a function for getting configuration values in your custom module's helper.
public function getConfig($config_path)
{
return $this->scopeConfig->getValue(
$config_path,
\Magento\Store\Model\ScopeInterface::SCOPE_STORE
);
}
and call anywhere you want for example in test.phtml
$moduleStatus = $this->helper('Customvendorname\Custommodulename\Helper\Data')->getConfig('sectionid/groupid/fieldid');
In block and helper call like this:
$this->_objectManager->create('Customvendorname\Custommodulename\Helper\Data')->getConfig('sectionid/groupid/fieldid');
Note: construct Object Manager on class constructor or directly use as
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$objectManager->create('Customvendorname\Custommodulename\Helper\Data')->getConfig('sectionid/groupid/fieldid');
Manish
- 3,106
- 7
- 31
- 47
7
you can use the following code to get the value from the core_config table
Edit:
Create an instance of ScopeConfigInterface class using object manager
$scopeConfig = $this->_objectManager->create('Magento\Framework\App\Config\ScopeConfigInterface');
Then By using the scopeConfig object get the config value
$configPath = $sectionId.'/'.$groupId.'/'.$fieldId;
$value = $scopeConfig->getValue(
$configPath,
\Magento\Store\Model\ScopeInterface::SCOPE_STORE
);
Shaheer Ali
- 2,355
- 4
- 19
- 28
-
1even if it works, the use of objectManager to instantiate classes is highly discouraged. The correct approach is to use dependency injection. – Marius Oct 27 '15 at 13:14
-
-
@Marius - why is magento using $this->_objectManager->create('Magento\Catalog\Model\Category') in magento2/app/code/Magento/Catalog/Controller/Adminhtml/Category.php – huzefam Oct 28 '15 at 10:07
-
That one didn't get refactored yet. Check this for more details http://magento.stackexchange.com/q/28617/146 – Marius Oct 28 '15 at 11:12
-
6
I have done like this, I have created a helper function in Data.php file
public function getConfig($config_path)
{
return $this->scopeConfig->getValue(
$config_path,
\Magento\Store\Model\ScopeInterface::SCOPE_STORE
);
}
Then i have called one single line in the phtml file.
$required_loc = $this->helper('Namespace\Modulename\Helper\Data')->getConfig('sectionid/groupid/fieldid');
Naveenbos
- 1,226
- 2
- 17
- 30
\Magento\Framework\App\Helper\AbstractHelper) you will already have the$this->scopeConfigobject without any need to inject it – Alessandro Ronchi Jun 29 '16 at 16:45