Magento 2 - Jak uzyskać wartości konfiguracyjne rozszerzenia w plikach phtml?

21

Pracuję z Magento 2 - beta.

Ale nie można znaleźć sposobu uzyskania wartości konfiguracyjnych w plikach phtml.

np .: Chcę uzyskać moje niestandardowe wartości konfiguracji modułów w Magento_Catalog/templates/product/list.phtmlpliku.

Czy ktoś wie jak to zrobić?

Jan
źródło
czy możesz podać prawdziwy przykład z życia? co dokładnie próbujesz odzyskać?
Marius

Odpowiedzi:

43

Możesz utworzyć funkcję pobierania wartości konfiguracyjnych w pomocniku modułu niestandardowego.

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

Następnie możesz uzyskać wartości konfiguracyjne do wywołania tej funkcji w dowolnych plikach phtml.

$this->helper('Vendor\Module\Helper\Data')->getConfig('section/group/field');
Mikrofon
źródło
1
Dziękujemy za zwrócenie uwagi, że ScopeConfigInterface jest dostępny z abstrakcyjnej klasy pomocniczej! Uratował mnie przedefiniowaniem tego.
Robbie Averill,
Jak to działa z domyślną wartością konfiguracji? Próbuję wymyślić, jak uzyskać numer telefonu ustawiony w konfiguracji sklepu i wyświetlić go w header.phtml
Philip Deatherage
@Dmitry Myślę, że nadal musisz wprowadzić \Magento\Framework\App\Config\ScopeConfigInterfacekonstruktora pomocnika
fmsthird
6

Innym sposobem jest jak poniżej

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$conf = $objectManager->get('Magento\Framework\App\Config\ScopeConfigInterface')->getValue('group/field/value');
Rushvi
źródło
Nigdy nie należy używać menedżera obiektów do tworzenia instancji modelu
Dave
Ten tutaj jest bardzo zły.
medyna
0

Korekta w odpowiedzi Rushvi: jego section/group/field

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

Również jeśli chcesz dodać filtr sklepu, na przykład chcesz wyświetlać tekst, jeśli zapisujesz na poziomie konfiguracji sklepu, po prostu dodaj:

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

Po drugie, jeśli chodzi o krytykę: dobrze jest dołączyć do konstruktora klasy bloku za pośrednictwem DI. Oto tylko koncepcja

Hassan Ali Shahzad
źródło