Magento 2 - Come ottenere i valori di configurazione dell'estensione nei file phtml?


21

Sto lavorando con Magento 2 - beta.

Ma non riesco a trovare come ottenere i valori di configurazione nei file phtml.

ad es .: Voglio ottenere i valori di configurazione dei miei moduli personalizzati nel Magento_Catalog/templates/product/list.phtmlfile.

Qualcuno sa come farlo?


puoi fare un esempio di vita reale? che cosa stai cercando di recuperare esattamente?
— Marius

Risposte:


43

È possibile creare una funzione per ottenere valori di configurazione nell'helper del modulo personalizzato.

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

Quindi è possibile ottenere i valori di configurazione per chiamare questa funzione in qualsiasi file phtml.

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

1
Grazie per aver sottolineato che ScopeConfigInterface è disponibile dalla classe helper astratta! Mi ha salvato ridefinendolo.
— Robbie Averill,

Come funzionerebbe con un valore di configurazione predefinito? Sto cercando di capire come ottenere il numero di telefono impostato nella configurazione del negozio e visualizzarlo in header.phtml
— Philip Deatherage,

@Dmitry Penso che devi ancora iniettare \Magento\Framework\App\Config\ScopeConfigInterfacenel costruttore
— dell'helper

6

Un altro modo è come di seguito

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

Non dovresti mai usare il gestore oggetti per l'istanza di un modello
— Dave,

Questo qui è tremendamente sbagliato.
— medina,

0

Correzione nella risposta di Rushvi: la sua section/group/field

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

Inoltre, se si desidera aggiungere un filtro negozio, ad esempio, si desidera visualizzare il testo se si salva a livello di configurazione del negozio, aggiungere semplicemente quanto segue:

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

In secondo luogo per le critiche: è utile includerle nel costruttore della classe di blocchi tramite DI. Ecco solo un concetto

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.