Apakah Magento 2 memiliki abstraksi tingkat tinggi yang memungkinkan pemrogram-pengguna akhir untuk memperbarui nilai-nilai konfigurasi dalam core_config_data
tabel? Atau menggunakan SQL langsung satu-satunya cara untuk melakukan ini di Magento 2?
yaitu di Magento 1, Anda bisa melakukan sesuatu seperti ini
$config_model = new Mage_Core_Model_Config();
$config_model->saveConfig('my/config/path', $unique_id, 'default', 0);
dan simpan nilai konfigurasi ke core_config_data
. Apakah ada yang setara di Magento 2?
php
magento2
configuration
core-config-data
Alan Storm
sumber
sumber
@api
jawaban yang ditandai muncul di atas.Saya tidak akan menggunakan model atau model sumber daya, tetapi
\Magento\Framework\App\Config\Storage\WriterInterface
atau\Magento\Framework\App\Config\ConfigResource\ConfigInterface
(delegasi pertama ke yang kedua).Cukup lurus ke depan, juga:
sumber
\Magento\Framework\App\Config\Storage\WriterInterface
diimplementasikan oleh\Magento\Framework\App\Config\Storage\Writer
yang pada gilirannya menggunakan\Magento\Config\Model\ResourceModel\Config
.Anda juga bisa menggunakan
\Magento\Config\Model\Config::save
. Di bawah contoh sederhana:Sintaks ini tidak "sederhana", tetapi lebih aman untuk beberapa kasus. Karena menyimpan logika, tindakan mungkin lebih lambat daripada akses langsung ke db.
Dalam kasus saya,
$value
perlu dienkripsi. Disystem.xml
, saya mengatur model backend untuk bidang, dan logika penyimpanan mengenkripsi data.Sunting:
\Magento\Config\Model\Config::setDataByPath
lebih mudah digunakansumber
Untuk abstraksi tingkat tinggi, saya akan menyuntikkan
Magento\Framework\App\Config\Storage\WriterInterface
ke konstruktor skrip pengaturan data:Kemudian gunakan
save()
metode tersebut, misalnya:Catatan: Gunakan bentuk jamak lingkup: situs web / toko di
Magento\Store\Model\ScopeInterface
sumber
Di sini contoh lengkap untuk menangani konfigurasi Magento 2 secara terprogram.
Dalam kasus saya, saya menambahkan untuk menghapus cache juga, kalau tidak perubahan tidak muncul di Store> Config .
sumber