Magento 2 - Como obter os valores de configuração da extensão nos arquivos phtml?

21

Estou trabalhando com o Magento 2 - beta.

Mas não consegue encontrar como obter os valores de configuração nos arquivos phtml.

por exemplo: quero obter meus valores de configuração de módulos personalizados em Magento_Catalog/templates/product/list.phtmlarquivo.

Alguém sabe como fazer isto?

John
fonte
você pode dar um exemplo da vida real? o que exatamente você está tentando recuperar?
Marius

Respostas:

43

Você pode criar uma função para obter valores de configuração no auxiliar do seu módulo personalizado.

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

Então você pode obter os valores de configuração para chamar essa função em qualquer arquivo phtml.

$this->helper('Vendor\Module\Helper\Data')->getConfig('section/group/field');
Mike
fonte
1
Obrigado por apontar que o ScopeConfigInterface está disponível na classe auxiliar abstrata! Me salvou redefinindo-o.
Robbie Averill
Como isso funcionaria com um valor de configuração padrão? Eu estou tentando descobrir como obter o conjunto de número de telefone no config loja e exibi-lo no header.phtml
Philip Deatherage
@Dmitry Eu acho que você ainda precisa injetar \Magento\Framework\App\Config\ScopeConfigInterfaceno construtor do ajudante
fmsthird
6

Outra maneira é como abaixo

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$conf = $objectManager->get('Magento\Framework\App\Config\ScopeConfigInterface')->getValue('group/field/value');
Rushvi
fonte
Você nunca deve usar o gerenciador de objetos para instanciação de um modelo
Dave
Este aqui é tão errado.
medina
0

Correção na resposta de Rushvi: sua section/group/field

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

Além disso, se você deseja adicionar um filtro de loja, por exemplo, deseja exibir texto se salvar no nível de configuração da loja, basta adicionar o seguinte:

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

Em segundo lugar, para as críticas: é bom incluir no construtor da sua classe de bloco via DI. Aqui está apenas o conceito

Hassan Ali Shahzad
fonte