Как в Magento 2 программно узнать значение административной настройки?

(Дмитрий Федюк) #1

В Magento 1 системные настройки расположены в адмистративном разделе «Система» → «Настройки».
В Magento 1 получить значение административной опции можно посредством вызова метода Mage::getStoreConfig.
Если опция принимает только значение «да» или «нет», то в Magento можно получить её значение посредством вызова метода Mage::getStoreConfigFlag.

В Magento 2 системные настройки расположены в адмистративном разделе «Магазины» → «Настройки».
В Magento 2 получить значение административной опции можно посредством вызова метода \Magento\Framework\App\Config\ScopeConfigInterface::getValue, например:

/** @return mixed */
public function needHideDecialsAdmin() {
    /** @var \Magento\Framework\App\Config\ScopeConfigInterface $config */
    $config = \Magento\Framework\App\ObjectManager::getInstance()->get(
        'Magento\Framework\App\Config\ScopeConfigInterface'
    );
    return $config->getValue('rm_localization/admin/hide_decimals');
}

Если опция принимает только значение «да» или «нет», то в Magento можно получить её значение посредством вызова метода \Magento\Framework\App\Config\ScopeConfigInterface::isSetFlag:

/** @return bool */
public function needHideDecialsAdmin() {
    /** @var \Magento\Framework\App\Config\ScopeConfigInterface $config */
    $config = \Magento\Framework\App\ObjectManager::getInstance()->get(
        'Magento\Framework\App\Config\ScopeConfigInterface'
    );
    return $config->isSetFlag('rm_localization/admin/hide_decimals');
}
0 Likes

(Дмитрий Федюк) #2

В реальной практике правильно, конечно, использовать не \Magento\Framework\App\ObjectManager::getInstance(), а внедрение зависимости в конструктор, например:

<?php
namespace Df\Login\Block\Backend;
class Buttons extends \Magento\Backend\Block\Template {
	/**
	 * @param \Magento\Backend\Block\Template\Context $context
	 * @param \Magento\Framework\View\Page\Config $pageConfig
	 * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
	 */
	public function __construct(
		\Magento\Backend\Block\Template\Context $context
		,\Magento\Framework\View\Page\Config $pageConfig
		,\Magento\Framework\App\Config\ScopeConfigInterface $config
	) {
		$pageConfig->setMetadata('google-signin-client_id', 
			$config->getValue('df_login/google/client_id')
		);
		parent::__construct($context);
	}
}
0 Likes