Magento 2'de yapılandırma değerlerini nasıl ayarlayabilirim?


12

Önceden (Magento 1'de, site için ayar içeren Kurulum adlı bir modül oluşturduk. Yükseltme komut dosyaları şöyle görünür:

$installer = $this;
$installer->startSetup();
$installer->setConfigData("fastsimpleimport/general/partial_indexing", 1);
$installer->setConfigData("fastsimpleimport/product/disable_preprocess_images", 1);
$installer->setConfigData('general/country/default', 'GB');
$installer->setConfigData('general/locale/firstday', 1); 
$installer->setConfigData('general/locale/timezone', 'Europe/London');
$installer->setConfigData('general/store_information/merchant_country', 'GB');
$installer->setConfigData('design/header/welcome', 'Enter your value');
$installer->setConfigData('design/head/title_suffix', 'Enter your value');
$installer->setConfigData('currency/options/base', 'GBP');
$installer->setConfigData('currency/options/default', 'GBP');
// ...

Yukarıda M2'de nasıl yapılacağını anlayamıyorum.

Başka bir deyişle: M2'de yapılandırma verilerini ayarlamaya nasıl gidebilirim?


2
neden DB'de bunlara ihtiyacınız var? Sadece config.xmldosyaya ekleyemez misiniz ?
Marius

Sadece işler böyle yapılır. Modül uzantılarında (en azından M1'de) ortak yaklaşım işleme ayarları gibi görünüyor. Ayrıca, modülümüz yükseltildiğinde taşınabilmeleri için sürüm bazında ele alınmaları gerekir.
Martin Wickman

Yanıtlar:


15

Bu işe yarıyor gibi görünüyor:

class InstallData implements InstallDataInterface 
{
    public function __construct(
        LoggerInterface $loggerInterface,
        \Magento\Framework\App\Config\ConfigResource\ConfigInterface  $resourceConfig)
    {
        $this->logger = $loggerInterface;
        $this->resourceConfig = $resourceConfig;
    }        

    public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
    {
        $setup->startSetup();

        $this->resourceConfig->saveConfig(
            'a/b/c', 
            'value', 
            \Magento\Framework\App\Config\ScopeConfigInterface::SCOPE_TYPE_DEFAULT, 
            \Magento\Store\Model\Store::DEFAULT_STORE_ID
        );

        $setup->endSetup();
    }   
}

1
Ben de $ kaynakConfig nesnesi için yapıcı DI arabirimi kullanmak (ve daha temiz olabilir) düşünüyorum. \Magento\Framework\App\Config\ConfigResource\ConfigInterface $resourceConfig
Şunun

Hey Martin, modülünüzden biraz daha fazlasını paylaşabilir misiniz? Hangi isim alanında vs kullanmam gerekiyor ?!
Klettseb

neden kaydedici eklediniz? sadece bir alışkanlık mı?
OZZIE

6

Aşağıdaki arayüz kullanılabilir \Magento\Framework\App\Config\Storage\WriterInterface, 2 yöntemi vardır:

  • save($path, $value, $scope = ScopeConfigInterface::SCOPE_TYPE_DEFAULT, $scopeId = 0)
  • delete($path, $scope = ScopeConfigInterface::SCOPE_TYPE_DEFAULT, $scopeId = 0)

\Magento\Config\Model\ResourceModel\Configİstemci koduna kıyasla daha üst düzeydir ve istemci kodundan kullanılmalıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.