Magento 2에서 구성 값을 설정하는 방법


12

이전에는 (Magento 1에서) 사이트 설정을 포함하는 Setup이라는 모듈을 만들었습니다. 업그레이드 스크립트는 다음과 같습니다.

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

M2에서 위의 작업을 수행하는 방법을 알 수 없습니다.

즉, M2에서 구성 데이터를 설정하는 방법은 무엇입니까?


2
왜 DB에서 이것들이 필요합니까? config.xml파일에 추가 할 수 없습니까 ?
Marius

그것은 단지 일이 이루어지는 방식입니다. 모듈 확장 (적어도 M1)의 설정을 처리하는 일반적인 접근 방식 인 것 같습니다. 또한 모듈을 업그레이드 할 때 마이그레이션 할 수 있도록 버전별로 처리해야합니다.
Martin Wickman

답변:


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
하브 Guétin

마틴, 모듈 좀 더 공유 할 수있어? 어떤 네임 스페이스 등을 사용해야합니까?!
Klettseb

로거도 왜 추가 했습니까? 그냥 습관이나?
OZZIE

6

다음 인터페이스를 사용할 수 \Magento\Framework\App\Config\Storage\WriterInterface있으며 두 가지 방법이 있습니다.

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

에 비해 높은 수준 \Magento\Config\Model\ResourceModel\Config이며 클라이언트 코드에서 사용해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.