Magento 2 - Comment obtenir les valeurs de configuration de l'extension dans les fichiers phtml?


21

Je travaille avec Magento 2 - beta.

Mais je ne trouve pas comment obtenir les valeurs de configuration dans les fichiers phtml.

par exemple: je veux obtenir les valeurs de configuration de mes modules personnalisés dans un Magento_Catalog/templates/product/list.phtmlfichier.

Quelqu'un sait-il comment faire ça?


pouvez-vous donner un exemple concret? qu'essayez-vous exactement de récupérer?
Marius

Réponses:


43

Vous pouvez créer une fonction pour obtenir des valeurs de configuration dans l'aide de votre module personnalisé.

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

Ensuite, vous pouvez obtenir les valeurs de configuration pour appeler cette fonction dans n'importe quel fichier phtml.

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

1
Merci d'avoir souligné que ScopeConfigInterface est disponible dans la classe d'assistance abstraite! M'a sauvé en le redéfinissant.
Robbie Averill

Comment cela fonctionnerait-il avec une valeur de configuration par défaut? J'essaie de comprendre comment obtenir le numéro de téléphone dans la configuration du magasin et l'afficher dans l'en-tête.phtml
Philip Deatherage

@Dmitry Je pense que vous devez encore injecter \Magento\Framework\App\Config\ScopeConfigInterfacedans le constructeur de l'aide
fmsthird

6

Une autre façon est comme ci-dessous

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

Vous ne devez jamais utiliser le gestionnaire d'objets pour l'instanciation d'un modèle
Dave

Celui-ci est tellement faux.
medina

0

Correction dans la réponse de Rushvi: son section/group/field

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

De plus, si vous souhaitez ajouter un filtre de magasin, par exemple, souhaitez afficher du texte si vous l'enregistrez au niveau de la configuration du magasin, ajoutez simplement ce qui suit:

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

Deuxièmement pour les critiques: il est bon d'inclure dans le constructeur de votre classe de bloc via DI. Voici juste le concept

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.