मैं Magento 2 में कॉन्फ़िगरेशन मान कैसे सेट कर सकता हूं?


12

पहले (Magento 1 में, वह है) हमने सेटअप नामक एक मॉड्यूल बनाया जिसमें साइट के लिए सेटिंग शामिल थी। अपग्रेड स्क्रिप्ट कुछ इस तरह दिखती है:

$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');
// ...

मैं यह नहीं पता लगा सकता कि एम 2 में उपरोक्त कैसे करना है।

दूसरे शब्दों में: मैं M2 में कॉन्फिग डेटा सेट करने के बारे में कैसे जाऊं?


2
आपको डीबी में इनकी आवश्यकता क्यों है? क्या आप इसे केवल config.xmlफ़ाइल में नहीं जोड़ सकते ?
Marius

बस इस तरह से चीजें की जाती हैं। यह मॉड्यूल एक्सटेंशन (कम से कम M1 में) में सामान्य दृष्टिकोण हैंडलिंग सेटिंग्स प्रतीत होता है। इसके अलावा, उन्हें एक संस्करण के आधार पर संभालने की आवश्यकता है ताकि हमारे मॉड्यूल के अपग्रेड होने पर उन्हें माइग्रेट किया जा सके।
मार्टिन विकमैन

जवाबों:


15

यह काम करने लगता है:

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
मुझे लगता है कि यह $ resourceConfig ऑब्जेक्ट के लिए कन्स्ट्रक्टर में DI से इंटरफ़ेस का उपयोग करने के लिए (और क्लीनर हो सकता है) काम कर सकता है। इस तरह:\Magento\Framework\App\Config\ConfigResource\ConfigInterface $resourceConfig
Hervé Guétin

हे मार्टिन, क्या आप अपने मॉड्यूल के कुछ और शेयर कर सकते हैं? मैं क्या नामस्थान आदि में संघर्ष कर रहा हूँ मैं का उपयोग करने की जरूरत है ?!
क्लेत्सेब

आपने लकड़हारा भी क्यों जोड़ा? बस एक आदत या
OZZIE

6

निम्नलिखित इंटरफ़ेस का उपयोग किया जा सकता है \Magento\Framework\App\Config\Storage\WriterInterface, इसमें 2 विधियाँ हैं:

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

इसकी तुलना में अधिक उच्च-स्तर है \Magento\Config\Model\ResourceModel\Config, और इसका उपयोग क्लाइंट कोड से किया जाना चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.