Magento 2 - ¿Cómo leer los valores en etc / config.xml?


Respuestas:


12

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.xmlinú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/falsevalor, puede hacerlo así:

$flag = $this->scopeConfig->isSetFlag($path, \Magento\Store\Model\ScopeInterface::SCOPE_STORE);

$pathrepresenta 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á 1y

$value = $this->scopeConfig->isSetFlag('section/group/value1', \Magento\Store\Model\ScopeInterface::SCOPE_STORE);  

devolverá true.


Gracias. He intentado e hice un ejemplo. github.com/zzpaul/magento2-module-custom-config-demo
Paul
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.