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?

John
la source
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');
Mike
la source
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');
Rushvi
la source
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

Hassan Ali Shahzad
la source