Comment puis-je définir une valeur dans core_config_data avec Magento 2 par programme?

13

Je sais que vous pouvez définir des données de configuration dans Magento 1 avec:

Mage::getModel('core/config')->saveConfig('my/path/whatever', $value);

et vous pouvez obtenir des données de configuration dans Magento 2 avec:

protected $_scopeConfig

public function __construct(\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig) {
    $this->_scopeConfig = $scopeConfig;
}

+

$this->_scopeConfig->getValue( 'path/of/config', \Magento\Store\Model\ScopeInterface::SCOPE_STORE );

Mais je ne sais pas comment sauvegarder les données de configuration dans Magento 2

Peter Horitzer
la source

Réponses:

24

Voici comment enregistrer les données dans magento2 core_config_data

    use Magento\Framework\App\Config\ScopeConfigInterface;

    /**
     *  @var \Magento\Framework\App\Config\Storage\WriterInterface
     */
    protected $configWriter;

    /**
     *
     * @param \Magento\Framework\App\Config\Storage\WriterInterface $configWriter
     */
    public function __construct(
        ....
        \Magento\Framework\App\Config\Storage\WriterInterface $configWriter
        .....
    )
    {
        $this->configWriter = $configWriter;
    }

ajoutez la ligne ci-dessous dans votre méthode d'appel:

$this->configWriter->save('my/path/whatever',  $value, $scope = ScopeConfigInterface::SCOPE_TYPE_DEFAULT, $scopeId = 0);
Shireen N
la source
6

Vous pouvez injecter la classe ConfigInterface et l'utiliser pour enregistrer la valeur.

protected $_configInterface;

public function __construct(
    \Magento\Framework\App\Config\ConfigResource\ConfigInterface $configInterface
) {
    $this->_configInterface = $configInterface;
}

Ensuite, vous pouvez l'utiliser dans votre méthode comme

$this->_configInterface
    ->saveConfig('section/group/field', $value, 'default', 0);
Priyank
la source
1
Ne faites pas cela, sauf si vous êtes sûr que vos chemins n'ont pas besoin d'être coupés. Il est recommandé d'utiliser le configWriter
Chuvisco