¿Magento 2 tiene una abstracción de alto nivel que permite a los programadores de usuarios finales actualizar los valores de configuración en la core_config_data
tabla? ¿O está usando SQL directo la única forma de hacer esto en Magento 2?
es decir, en Magento 1, podrías hacer algo como esto
$config_model = new Mage_Core_Model_Config();
$config_model->saveConfig('my/config/path', $unique_id, 'default', 0);
y guardar los valores de configuración en core_config_data
. ¿Hay un equivalente en Magento 2?
php
magento2
configuration
core-config-data
Alan Storm
fuente
fuente
@api
respuestas marcadas aparecen en la parte superior.No usaría un modelo o un modelo de recurso, pero
\Magento\Framework\App\Config\Storage\WriterInterface
o\Magento\Framework\App\Config\ConfigResource\ConfigInterface
(el primero delega al segundo).Bastante sencillo también:
fuente
\Magento\Framework\App\Config\Storage\WriterInterface
se implementa por lo\Magento\Framework\App\Config\Storage\Writer
que a su vez se usa\Magento\Config\Model\ResourceModel\Config
.También puedes usar
\Magento\Config\Model\Config::save
. Debajo de una muestra simple:Esta sintaxis no es "simple", pero en algunos casos es más segura. De acuerdo con la lógica de guardar, la acción podría ser más lenta que el acceso directo a la base de datos.
En mi caso,
$value
necesito estar encriptado. Ensystem.xml
, configuré el modelo de back-end para el campo, y la lógica de guardar encripta los datos.Editar:
\Magento\Config\Model\Config::setDataByPath
más simple de usarfuente
Para una abstracción de alto nivel, inyectaría
Magento\Framework\App\Config\Storage\WriterInterface
en el constructor de un script de configuración de datos:Luego use el
save()
método, por ejemplo:Notas: Utilice la forma plural de ámbitos: sitios web / tiendas en
Magento\Store\Model\ScopeInterface
fuente
Aquí una muestra completa para manejar la configuración de Magento 2 mediante programación.
En mi caso, agrego para borrar el caché también, de lo contrario los cambios no aparecen en Tienda> Configuración .
fuente