Respostas:
Você não pode ler os valores diretamente de etc/config.xml
.
Quero dizer, você pode, mas não faz sentido ler diretamente a partir daí, pois os valores podem ser substituídos na seção stores-> configuration que torna o valor config.xml
inútil.
Em vez disso, você pode ler a configuração global mesclada e, se o valor não for sobrescrito na seção de configuração, você obtém o valor config.xml
.
E você pode fazer isso adicionando uma dependência à sua classe que precisa ler o valor da configuração assim:
espaço para nome Your \ Namespace \ Here;
class YourClassName
{
protected $scopeConfig;
public function __construct(
....
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
....
) {
....
$this->scopeConfig = $scopeConfig;
....
}
}
Então você pode ler o valor da configuração como este
$path = 'path/to/value';
$value = $this->scopeConfig->getValue($path, \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
Ou, se for um sinal de sim / não e você desejar obter um true/false
valor, faça o seguinte:
$flag = $this->scopeConfig->isSetFlag($path, \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
$path
representa todas as tags concatenadas por slash ( /
) até o seu valor (semelhante a M1).
Para defini-los, config.xml
você precisa adicioná-lo ao seu arquivo
<?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>
Usando o código acima,
$value = $this->scopeConfig->getValue('section/group/value1', \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
retornará 1
e
$value = $this->scopeConfig->isSetFlag('section/group/value1', \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
retornará true
.