Làm cách nào tôi có thể đặt giá trị trong core_config_data với Magento 2 theo chương trình?


12

Tôi biết bạn có thể đặt dữ liệu cấu hình trong Magento 1 với:

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

và bạn có thể nhận dữ liệu cấu hình trong Magento 2 với:

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 );

Nhưng tôi không thể hiểu, làm thế nào tôi có thể lưu dữ liệu cấu hình trong Magento 2

Câu trả lời:


23

Đây là cách bạn nên lưu dữ liệu trong 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;
    }

thêm dòng dưới đây trong phương thức gọi của bạn:

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

6

Bạn có thể tiêm lớp ConfigInterface và sử dụng nó để lưu giá trị.

protected $_configInterface;

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

Sau đó, bạn có thể sử dụng nó trong phương pháp của bạn như

$this->_configInterface
    ->saveConfig('section/group/field', $value, 'default', 0);

1
Đừng làm điều này trừ khi bạn chắc chắn rằng đường dẫn của bạn không cần phải cắt. Bạn nên sử dụng configWriter
Chuvisco
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.