ম্যাজেন্টো 2: প্রোগ্রামিয়ালি `কোর_কনফিগ_ডেটা` তে একটি মান যুক্ত করুন`


24

ম্যাজেন্টো 2 এর কি উচ্চ স্তরের বিমূর্ততা রয়েছে যা শেষ-ব্যবহারকারী-প্রোগ্রামারদের core_config_dataসারণীতে কনফিগারেশন মান আপডেট করতে দেয় ? অথবা ম্যাজেন্টো 2-তে এটি করার একমাত্র উপায় সোজা এসকিউএল ব্যবহার করছেন?

অর্থাত্ ম্যাজেন্টো 1-এ, আপনি এরকম কিছু করতে পারেন

$config_model = new Mage_Core_Model_Config();
$config_model->saveConfig('my/config/path', $unique_id, 'default', 0);

এবং কনফিগারেশন মান সংরক্ষণ করুন core_config_data। ম্যাজেন্টো 2 তে কি সমমান আছে?

উত্তর:


21

একই saveConfigপদ্ধতি রয়েছে: https://github.com

মূলটি থেকে ব্যবহারের উদাহরণ: https://github.com


+1 দরকারী, আপনাকে ধন্যবাদ! আমি কিছুক্ষণের জন্য প্রশ্নটি খোলা রেখে যাচ্ছি কিনা তা @apiচিহ্নিত করার জন্য একটি চিহ্নিত উত্তরগুলি শীর্ষে উঠে যায়।
অ্যালান ঝড়

18

আমি কোনও মডেল বা কোনও সংস্থান মডেল ব্যবহার করব না, তবে \Magento\Framework\App\Config\Storage\WriterInterfaceবা \Magento\Framework\App\Config\ConfigResource\ConfigInterface(প্রথমটিতে দ্বিতীয়টিকে অর্পণ করছি)।

খুব সোজা-এগিয়ে, খুব:

use Magento\Framework\App\Config\Storage\WriterInterface;

class SomeClass {

    public function __construct(WriterInterface $configWriter)
    {
        $configWriter->save('some/config/path', 'some value');
    }
}

ধন্যবাদ! আমি মনে করি এটি আমাদের ব্যবহার করা উচিত এটি সর্বোত্তম পদ্ধতির / উচ্চ স্তরের বিমূর্তি। কারণ \Magento\Framework\App\Config\Storage\WriterInterfaceবাস্তবায়িত হয় \Magento\Framework\App\Config\Storage\Writerযা দ্বারা ঘুরে ব্যবহার করে \Magento\Config\Model\ResourceModel\Config
আন্ড্রেই

4

আপনি ব্যবহার করতে পারেন \Magento\Config\Model\Config::save। একটি সাধারণ নমুনার নীচে:

$configData = [
    'section' => 'MY_SECTION',
    'website' => null,
    'store'   => null,
    'groups'  => [
        'MY_GROUP' => [
            'fields' => [
                'MY_FIELD' => [
                    'value' => $myValue,
                ],
            ],
        ],
    ],
];

// $this->configFactory --> \Magento\Config\Model\Config\Factory
/** @var \Magento\Config\Model\Config $configModel */
$configModel = $this->configFactory->create(['data' => $configData]);
$configModel->save();

এই বাক্য গঠনটি "সহজ" নয়, তবে এটি কিছু ক্ষেত্রে আরও নিরাপদ। সংরক্ষণ যুক্তি হিসাবে, ক্রিয়াটি ডিবিতে সরাসরি অ্যাক্সেসের চেয়ে ধীর হতে পারে।

আমার ক্ষেত্রে, $valueএনক্রিপ্ট করা প্রয়োজন। ইন system.xml, আমি ক্ষেত্রটির জন্য ব্যাকএন্ড মডেল সেট করেছি এবং সংরক্ষণ লজিক ডেটা এনক্রিপ্ট করে।

সম্পাদনা করুন: \Magento\Config\Model\Config::setDataByPathআরও সহজ ব্যবহার


4

একটি উচ্চ স্তরের বিমূর্তনের জন্য আমি Magento\Framework\App\Config\Storage\WriterInterfaceএকটি ডেটা সেটআপ স্ক্রিপ্টটির নির্মাণকারীর ভিতরে ইনজেকশন করব :

use Magento\Framework\App\Config\Storage\WriterInterface; 

public function __construct(WriterInterface $configWriter) {...}

তারপরে save()পদ্ধতিটি ব্যবহার করুন , উদাহরণস্বরূপ:

$website = $this->websiteRepository->get('main_website'); // inject Magento\Store\Model\WebsiteRepository;

$this->configWriter->save('general/country/default', 'US', ScopeInterface::SCOPE_WEBSITES, $website->getId()); // inject Magento\Store\Model\ScopeInterface;

নোটস: স্কোপগুলির বহুবচন রূপ: ওয়েবসাইট / স্টোরগুলিতে ব্যবহার করুন Magento\Store\Model\ScopeInterface


0

ম্যাগান্টো 2 কনফিগারেশনটি প্রোগ্রামক্রমে পরিচালনা করতে এখানে একটি সম্পূর্ণ নমুনা।

আমার ক্ষেত্রে, আমিও ক্যাশে সাফ করার জন্য যুক্ত করি, অন্যথায় স্টোর> কনফিগারেশনে পরিবর্তনগুলি উপস্থিত হয় না

/**
 * @var \Magento\Config\Model\ResourceModel\Config
 */
protected $resourceConfig;

/**
 * @var \Magento\Framework\App\Cache\TypeListInterface
 */
protected $cacheTypeList;

public function __construct(
    \Magento\Config\Model\ResourceModel\Config $resourceConfig,
    \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
) {
    $this->resourceConfig = $resourceConfig;
    $this->cacheTypeList = $cacheTypeList;
}

public function process()
{
    $this->resourceConfig->saveConfig(
        'my/config/path',
        $unique_id,
        \Magento\Framework\App\ScopeInterface::SCOPE_DEFAULT,
        0
    );
     $this->cacheTypeList->cleanType(\Magento\Framework\App\Cache\Type\Config::TYPE_IDENTIFIER);
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.