21

I'm working with Magento 2 - beta.

But cannot find how to get the configuration values in the phtml files.

eg: I want to get my custom modules configuration values in Magento_Catalog/templates/product/list.phtml file.

Anyone know how to do this?

43

You can create a function for getting configuration values in your custom module's helper.

<?php
namespace Vendor\Module\Helper;

class Data extends \Magento\Framework\App\Helper\AbstractHelper
{
    public function getConfig($config_path)
    {
        return $this->scopeConfig->getValue(
            $config_path,
            \Magento\Store\Model\ScopeInterface::SCOPE_STORE
        );
    }
}

Then you can get the configuration values to call this function in any phtml files.

$this->helper('Vendor\Module\Helper\Data')->getConfig('section/group/field');
  • 1
    Thanks for pointing out that the ScopeConfigInterface is available from the abstract helper class! Saved me redefining it. – Robbie Averill Dec 15 '15 at 22:12
  • How would this work with a default config value? I'm trying to figure out how to get the phone number set in the store config and display it in the header.phtml – Philip Deatherage Feb 22 '16 at 19:05
  • @Dmitry I think you still need to inject \Magento\Framework\App\Config\ScopeConfigInterface in helper's constructor – fmsthird Apr 15 '19 at 8:02
6

Another way is as below

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$conf = $objectManager->get('Magento\Framework\App\Config\ScopeConfigInterface')->getValue('group/field/value');
  • You should never use the object manager for instantiation of a model – Dave Aug 23 '16 at 8:07
  • This one here is sooo wrong. – medina Oct 19 '17 at 0:17
0

Correction in Rushvi's answer: its section/group/field

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$conf = $objectManager->get('Magento\Framework\App\Config\ScopeConfigInterface')->getValue('section/group/field');

Also if you want to add store filter for example want to display text if save at store configuration level then just add following:

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$storeScope = \Magento\Store\Model\ScopeInterface::SCOPE_STORES;
$conf = $objectManager->get('Magento\Framework\App\Config\ScopeConfigInterface')->getValue('carriers/freeshipping/extra_info',$storeScope);

Secondly for critiques: its v good to include in your block class's constructor via DI. Here is just concept

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.