Question

J'essaie d'ajouter la configuration du numéro de téléphone du magasin dans Magasins > Configuration > Général > Général > Informations sur le magasin à l'en-tête de mon thème.Dans un module, je pense que cela pourrait être fait en utilisant getValue() dans \Magento\Framework\App\Config\ScopeConfigInterface mais je ne vois pas comment l'utiliser dans un thème.Jusqu'à présent, j'ai ajouté ceci à default.xml

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

mais je ne sais pas comment obtenir le numéro de téléphone à l'intérieur phone.phtml

Était-ce utile?

La solution

Je vous suggère de créer votre propre bloc, qui prolongera la Magento\Framework\View\Element\Template classe.

Comme le Magento\Framework\App\Config\ScopeConfigInterface fait partie de Magento\Framework\View\Element\AbstractBlock (le parent du Template classe) déclarée dans $_scopeConfig, vous pouvez ajouter la fonction suivante à votre bloc personnalisé :

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

Ensuite, dans votre modèle, vous pouvez faire :

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

N'oubliez pas de mettre à jour votre mise en page comme ceci :

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

Autres conseils

Nous pouvons directement obtenir une configuration de magasin dans le modèle en obtenant une instance de Magento\Framework\App\Config\ScopeConfig:

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

Techniquement, quand quelqu'un demande une instance de Magento\Framework\App\Config\ScopeConfigInterface, nous allons lui donner une instance du Magento\Framework\App\Config\ScopeConfig.Par exemple, nous pouvons obtenir le paramètre par défaut pour le mode grille ou liste :

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

Note: Éviter d'utiliser directement le Gestionnaire d'objets.Nous devons garder nos modèles propres.Essayez d'ajouter une configuration au bloc.Devrait suivre la réponse @Raphael.

Essayez ceci sur Block, cela fonctionne pour moi après de nombreuses recherches

$isEnabled = \Magento\Framework\App\ObjectManager::getInstance()
->get('Magento\Framework\App\Config\ScopeConfigInterface') ->getValue('section/groupe/champ');

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top