Pergunta

Eu estou tentando adicionar o número de telefone a instalação no Lojas > Configuração > Geral > Geral > Armazenamento De Informações para o cabeçalho no meu tema.Em um módulo eu acho que isso pode ser feito usando getValue() no \Magento\Framework\App\Config\ScopeConfigInterface mas eu não consigo ver uma maneira de como utilizar esta dentro de um tema.Até então eu adicionei este default.xml

 <referenceContainer name="header-wrapper">
      <block class="Magento\Framework\View\Element\Template" name="store.phone.number" template="Magento_Theme::phone.phtml" />
 </referenceContainer>

mas eu não sei como obter o número de telefone dentro phone.phtml

Foi útil?

Solução

Eu sugiro que você crie o seu próprio bloco, que vai estender o Magento\Framework\View\Element\Template de classe.

Como o Magento\Framework\App\Config\ScopeConfigInterface é parte de Magento\Framework\View\Element\AbstractBlock (o pai do Template classe) declarado na $_scopeConfig, você pode adicionar a seguinte função para o seu bloco personalizado:

public function getConfig()
{
    return $this->_scopeConfig;
}

Em seguida, no seu modelo você pode fazer:

$block->getConfig()->getValue('value/you/need');

Não se esqueça de atualizar o seu esquema como este:

<referenceContainer name="header-wrapper">
      <block class="Vendor\Module\Block\View\Element\Template" name="store.phone.number" template="Magento_Theme::phone.phtml" />
</referenceContainer>

Outras dicas

Podemos obter diretamente uma loja de configuração no modelo por ficar instância de Magento\Framework\App\Config\ScopeConfig:

 \Magento\Framework\App\ObjectManager::getInstance()
  ->get('Magento\Framework\App\Config\ScopeConfigInterface')
  ->getValue('value/you/need');

Tecnicamente, quando alguém solicita uma instância de Magento\Framework\App\Config\ScopeConfigInterface, nós vamos dar-lhe uma instância do Magento\Framework\App\Config\ScopeConfig.Por exemplo, podemos obter a configuração padrão para a grade ou lista modo:

$productListMode = \Magento\Framework\App\ObjectManager::getInstance()
   ->get('Magento\Framework\App\Config\ScopeConfigInterface')
   ->getValue('catalog/frontend/list_mode');

Nota: Evitar o Uso de Gerenciador de objetos diretamente.Devemos manter os nossos modelos de limpar.Tente adicionar config com o bloco.Deve seguir o @Raphael resposta.

Tente isso no Bloco, ele está trabalhando para mim, depois de muitas pesquisa

$isEnabled = \Magento\Framework\App\ObjectManager::getInstance()
->get('Magento\Framework\App\Config\ScopeConfigInterface') ->getValue('seção/grupo/de campo');

Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange
scroll top