Ajouter une variable en configuration
Il est possible d'ajouter une variable en configuration via le fichier etc/adminhtml/system.xml.
Le comportement est similaire à Magento 1 :
<?xml version="1.0"?>
<!--
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Config:etc/system_file.xsd">
<system>
<tab id="<tab_id>" translate="label" sortOrder="200">
<label>My tab</label>
</tab>
<section id="<section id>" translate="label" type="text" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
<class>separator-top</class>
<label><section label></label>
<tab>tab_id</tab>
<resource>Adexos_Formation::config_section_id</resource>
<group id="<group_id>" translate="label" type="text" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
<label>My group</label>
<field id="<field_id>" translate="label" type="text" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
<label>My field</label>
</field>
</group>
</section>
</system>
</config>
Récupérer une variable en configuration
L'interface \Magento\Framework\App\Config\ScopeConfigInterface permet de récupérer une valeur en configuration :
/**
* @var ScopeConfigInterface
*/
private $scopeConfig;
public function getConfigValue() {
return $this->scopeConfig->getValue('section_id/group_id/field_id', \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
}
Attention, par défaut la méthode getValue() renvoie la valeur de configuration du scope par défaut s'il n'est pas spécifié dans le deuxième paramètre. Pour cette raison, vous devriez toujours utiliser la constante `SCOPE_STORE`.
Le module Scope Hint est très utile pour afficher le chemin de la configuration ainsi que la valeur des stores : https://github.com/avstudnitz/AvS_ScopeHint2
Valeur par défaut
Le fichier etc/config.xml permet de définir une valeur par défaut pour une configuration, la syntaxe est la suivante :
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
<default>
<section_id>
<group_id>
<field_id><![CDATA[My default value]]></field_id>
</group_id>
</section_id>
</default>
<stores>
<store_code>
<section_id>
<group_id>
<field_id><![CDATA[My default value for store "store code"]]></field_id>
</group_id>
</section_id>
</store_code>
</stores>
</config>