Magento 2 - Как получить значения конфигурации расширения в файлах phtml?


21

Я работаю с Magento 2 - бета.

Но не могу найти, как получить значения конфигурации в файлах phtml.

Например: я хочу получить значения конфигурации моих пользовательских модулей в Magento_Catalog/templates/product/list.phtmlфайле.

Кто-нибудь знает, как это сделать?


Можете ли вы привести пример из жизни? что именно вы пытаетесь получить?
Мариус

Ответы:


43

Вы можете создать функцию для получения значений конфигурации в помощнике вашего пользовательского модуля.

<?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
        );
    }
}

Затем вы можете получить значения конфигурации для вызова этой функции в любых файлах phtml.

$this->helper('Vendor\Module\Helper\Data')->getConfig('section/group/field');

1
Спасибо за указание на то, что ScopeConfigInterface доступен из абстрактного вспомогательного класса! Спас меня переопределение.
Робби Аверилл

Как это будет работать со значением конфигурации по умолчанию? Я пытаюсь выяснить, как получить телефонный номер, установленный в конфигурации магазина, и отобразить его в header.phtml
Филипп Deatherage

@Dmitry Я думаю, вам все еще нужно ввести \Magento\Framework\App\Config\ScopeConfigInterfaceв конструктор помощника
fmsthird

6

Другой способ, как показано ниже

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

Вы никогда не должны использовать диспетчер объектов для создания экземпляров модели
Дейв

Этот вот ооочень неправильно.
Медина

0

Исправление в ответе Рушви: его section/group/field

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

Также, если вы хотите добавить фильтр магазина, например, хотите отобразить текст, если сохранить на уровне конфигурации магазина, просто добавьте следующее:

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

Во-вторых, для критики: его хорошо включить в конструктор класса вашего блока через DI. Вот только концепция

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.