O Magento 2 possui uma abstração de alto nível que permite que os programadores do usuário final atualizem os valores de configuração na core_config_data
tabela? Ou usar o SQL direto é a única maneira de fazer isso no Magento 2?
ou seja, no Magento 1, você poderia fazer algo assim
$config_model = new Mage_Core_Model_Config();
$config_model->saveConfig('my/config/path', $unique_id, 'default', 0);
e salve os valores de configuração core_config_data
. Existe um equivalente no Magento 2?
php
magento2
configuration
core-config-data
Alan Storm
fonte
fonte
@api
respostas marcadas chegam até o topo.Eu não usaria um modelo ou um modelo de recursos, mas
\Magento\Framework\App\Config\Storage\WriterInterface
ou\Magento\Framework\App\Config\ConfigResource\ConfigInterface
(o primeiro a delegar no segundo).Bem direto também:
fonte
\Magento\Framework\App\Config\Storage\WriterInterface
é implementado pelo\Magento\Framework\App\Config\Storage\Writer
qual, por sua vez, usa\Magento\Config\Model\ResourceModel\Config
.Você também pode usar
\Magento\Config\Model\Config::save
. Abaixo uma amostra simples:Essa sintaxe não é "simples", mas é mais segura em alguns casos. Para a lógica de salvamento, a ação pode ser mais lenta que o acesso direto ao banco de dados.
No meu caso,
$value
precisa ser criptografado. Emsystem.xml
, defino o modelo de back-end para o campo e a lógica de salvamento criptografa os dados.Editar:
\Magento\Config\Model\Config::setDataByPath
mais simples de usarfonte
Para uma abstração de alto nível, eu injetaria
Magento\Framework\App\Config\Storage\WriterInterface
no construtor de um script de configuração de dados:Em seguida, use o
save()
método, por exemplo:Notas: Use a forma plural de escopos: sites / lojas em
Magento\Store\Model\ScopeInterface
fonte
Aqui está uma amostra completa para lidar com a configuração do Magento 2 programaticamente.
No meu caso, eu adiciono para limpar o cache também, caso contrário , as alterações não aparecem em Store> Config .
fonte