29

This question already has an answer here:

Fields added through the system.xml and default values populated with config.xml, how do we fetch the data in Magento2

marked as duplicate by 7ochem, Murtuza Zabuawala, Raphael at Digital Pianism, Rajeev K Tomy, Amit Bera Nov 17 '16 at 11:31

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

34

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!

  • 1
    public function __construct(\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig) -- there should be "\" preceding "Magento" – Reena Parekh Dec 23 '15 at 11:59
  • 1
    Just a hint: if you define methods which access config values in an helper class (extending \Magento\Framework\App\Helper\AbstractHelper) you will already have the $this->scopeConfig object without any need to inject it – Alessandro Ronchi Jun 29 '16 at 16:45
  • @AlessandroRonchi is there a list of all objects available in extended abstract helper classes somewhere? – paj Jul 20 '17 at 16:29
  • 1
    @paj as far as I know, you have to recursively look at constructor's dependencies of super classes; – Alessandro Ronchi Jul 23 '17 at 9:18
16

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');
5

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
    );
  • even 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
  • i guess that decreases the chance of a rewrite. – huzefam Oct 27 '15 at 13:16
  • @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 magento.stackexchange.com/q/28617/146 – Marius Oct 28 '15 at 11:12
  • okie cool makes sense – huzefam Oct 29 '15 at 10:26
5

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');

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