Respuestas:
No puede leer los valores directamente desde etc/config.xml
.
Quiero decir, puedes hacerlo, pero no tiene sentido leer directamente desde allí, ya que los valores pueden sobrescribirse desde la sección de configuración de tiendas-> que hace que el valor sea config.xml
inútil.
En su lugar, puede leer la configuración combinada global y, si el valor no se sobrescribe en la sección de configuración, obtendrá el valor config.xml
.
Y puede hacerlo agregando una dependencia a su clase que necesita leer el valor de configuración de esta manera:
espacio de nombres Su \ Espacio de nombres \ Aquí;
class YourClassName
{
protected $scopeConfig;
public function __construct(
....
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
....
) {
....
$this->scopeConfig = $scopeConfig;
....
}
}
Entonces puedes leer el valor de configuración de esta manera
$path = 'path/to/value';
$value = $this->scopeConfig->getValue($path, \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
O, si es un indicador de sí / no y desea obtener un true/false
valor, puede hacerlo así:
$flag = $this->scopeConfig->isSetFlag($path, \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
$path
representa todas las etiquetas concatenadas por slash ( /
) hasta su valor (similar a M1).
Para definirlos config.xml
, debe agregar esto en su archivo
<?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 el código anterior,
$value = $this->scopeConfig->getValue('section/group/value1', \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
volverá 1
y
$value = $this->scopeConfig->isSetFlag('section/group/value1', \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
devolverá true
.