web-dev-qa-db-fra.com

Comment obtenir des données de la configuration du système Magento

Je me demande simplement comment obtenir les données de configuration de mon module personnalisé. La configuration peut être définie à partir de l'admin system->configuration et comment le tirer en front-end?

60
Jorge
$configValue = Mage::getStoreConfig('sectionName/groupName/fieldName');

nom de section, nom de groupe et nom de champ sont présents dans le fichier etc/system.xml de votre module.

Le code ci-dessus récupère automatiquement la valeur de configuration du magasin actuellement visualisé.

Si vous voulez récupérer la valeur de configuration d'un autre magasin que le magasin actuellement visualisé, vous pouvez spécifier l'ID du magasin comme deuxième paramètre de la fonction getStoreConfig, comme ci-dessous:

$store = Mage::app()->getStore(); // store info
$configValue = Mage::getStoreConfig('sectionName/groupName/fieldName', $store);
151

vous devriez utiliser le code suivant

$configValue = Mage::getStoreConfig(
                   'sectionName/groupName/fieldName',
                   Mage::app()->getStore()
               ); 

Mage::app()->getStore() ceci ajoutera du code de magasin dans les valeurs d'extraction afin que vous puissiez obtenir des valeurs de configuration correctes pour le magasin actuel. Ceci évitera les valeurs de magasin incorrectes, car magento est également utilisé pour plusieurs magasins/vues, vous devez donc ajouter du code de magasin pour tout récupérer à Magento.

si nous avons plus d'un magasin ou plusieurs vues configurés, cela nous assurera d'obtenir les valeurs du magasin actuel.

23
user1645055

Magento 1.x

(exemple magento 2 fourni ci-dessous)

nom de section, nom de groupe et nom de champ sont présents dans le fichier etc/system.xml du module.

Syntaxe PHP:

Mage::getStoreConfig('sectionName/groupName/fieldName');

À partir d'un éditeur de l'administrateur, tel que le contenu d'une page de CMS ou d'un bloc statique; la description/description courte d'une catégorie de catalogue, d'un produit de catalogue, etc.

{{config path="sectionName/groupName/fieldName"}}

Pour que l'approche "Dans un éditeur" fonctionne, la valeur du champ doit être passée à travers un filtre pour que le contenu de {{...}} soit analysé. Magento le fera immédiatement pour les descriptions de catégories et de produits, ainsi que pour les pages CMS et les blocs statiques. Toutefois, si vous exportez le contenu dans votre propre script de vue personnalisé et souhaitez analyser ces variables, procédez comme suit:

<?php
    $example = Mage::getModel('identifier/name')->load(1);
    $filter  = Mage::getModel('cms/template_filter');
    echo $filter->filter($example->getData('field'));
?>

Remplacement de identifiant/nom par les valeurs appropriées pour le modèle que vous chargez et champ par le nom de l'attribut que vous souhaitez générer, qui peut contenir des {{...}} occurrences qui doivent être analysées.

Magento 2.x

à partir de n'importe quelle classe Block qui s'étend\Magento\Framework\View\Element\AbstractBlock

$this->_scopeConfig->getValue('sectionName/groupName/fieldName');

Tout autre PHP classe:

Si la classe (et aucune de ses parents) n'injecte pas \Magento\Framework\App\Config\ScopeConfigInterface via le constructeur, vous devrez l’ajouter à votre classe.

// ... Remaining class definition above...

/**
 * @var \Magento\Framework\App\Config\ScopeConfigInterface
 */
protected $_scopeConfig;

/**
 * Constructor
 */
public function __construct(
    \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
    // ...any other injected classes the class depends on...
) {
  $this->_scopeConfig = $scopeConfig;
  // Remaining constructor logic...
}

// ...remaining class definition below...

Une fois que vous l'avez injecté dans votre classe, vous pouvez maintenant récupérer les valeurs de configuration du magasin avec le même exemple de syntaxe que celui donné ci-dessus pour les classes de blocs.

Notez qu'après avoir modifié la liste de paramètres __construct () d'une classe, vous devrez peut-être effacer vos classes générées ainsi que le répertoire d'injection de dépendance: var/generation & var/di

19
Darren Felton

par exemple, si vous souhaitez obtenir une adresse e-mail à partir de la configuration> des adresses e-mail de magasin. Vous pouvez spécifier à partir de quel magasin vous voulez l'adresse:

$store=Mage::app()->getStore()->getStoreId(); 
/* Sender Name */
Mage::getStoreConfig('trans_email/ident_general/name',$store); 
/* Sender Email */
Mage::getStoreConfig('trans_email/ident_general/email',$store);
2
claudio