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

Ніколи не слід використовувати диспетчер об'єктів для створення моделі
Дейв

Цей тут так не так.
medina

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.