Risposte:
Non è possibile leggere i valori direttamente da etc/config.xml
.
Voglio dire, puoi, ma non ha senso leggere direttamente da lì poiché i valori possono essere sovrascritti dalla sezione di configurazione negozi-> che rende il valore config.xml
inutile.
Puoi invece leggere dalla configurazione globale unita e se il valore non viene sovrascritto nella sezione di configurazione, ottieni il valore da config.xml
.
E puoi farlo aggiungendo una dipendenza alla tua classe che deve leggere il valore di configurazione in questo modo:
namespace Your \ Namespace \ Here;
class YourClassName
{
protected $scopeConfig;
public function __construct(
....
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
....
) {
....
$this->scopeConfig = $scopeConfig;
....
}
}
Quindi puoi leggere il valore di configurazione in questo modo
$path = 'path/to/value';
$value = $this->scopeConfig->getValue($path, \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
Oppure, se è un flag sì / no e vuoi ottenere un true/false
valore, puoi farlo in questo modo:
$flag = $this->scopeConfig->isSetFlag($path, \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
$path
rappresenta tutti i tag concatenati da slash ( /
) fino al tuo valore (simile a M1).
Per definirli in config.xml
devi aggiungere questo nel tuo file
<?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>
Utilizzando il codice sopra,
$value = $this->scopeConfig->getValue('section/group/value1', \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
tornerà 1
e
$value = $this->scopeConfig->isSetFlag('section/group/value1', \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
tornerà true
.