Réponses:
Vous ne pouvez pas lire les valeurs directement depuis etc/config.xml
.
Je veux dire, vous pouvez, mais cela ne sert à rien de lire directement à partir de là, car les valeurs peuvent être écrasées dans la section de configuration stores-> qui rend la valeur config.xml
inutile.
Au lieu de cela, vous pouvez lire à partir de la configuration globale fusionnée et si la valeur n'est pas remplacée dans la section de configuration, vous obtenez la valeur config.xml
.
Et vous pouvez le faire en ajoutant une dépendance à votre classe qui doit lire la valeur de configuration comme ceci:
namespace Your \ Namespace \ Here;
class YourClassName
{
protected $scopeConfig;
public function __construct(
....
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
....
) {
....
$this->scopeConfig = $scopeConfig;
....
}
}
Ensuite, vous pouvez lire la valeur de configuration comme ceci
$path = 'path/to/value';
$value = $this->scopeConfig->getValue($path, \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
Ou, si c'est un drapeau oui / non et que vous voulez obtenir une true/false
valeur, vous pouvez le faire comme ceci:
$flag = $this->scopeConfig->isSetFlag($path, \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
$path
représente toutes les balises concaténées par slash ( /
) jusqu'à votre valeur (similaire à M1).
Pour les définir, config.xml
vous devez l'ajouter dans votre fichier
<?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><--! reserved word -->
<section><!-- anything goes here -->
<group><!-- anything goes here -->
<value1>1</value1><!-- anything goes here -->
<value2>some text</value2><!-- anything goes here -->
</group>
</section>
</default>
</config>
En utilisant le code ci-dessus,
$value = $this->scopeConfig->getValue('section/group/value1', \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
reviendra 1
et
$value = $this->scopeConfig->isSetFlag('section/group/value1', \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
reviendra true
.