Czy Magento 2 ma abstrakcję wysokiego poziomu, która pozwala programistom końcowym aktualizować wartości konfiguracyjne w core_config_data
tabeli? Czy też używanie prostego SQL jest jedynym sposobem na to w Magento 2?
tzn. w Magento 1 możesz zrobić coś takiego
$config_model = new Mage_Core_Model_Config();
$config_model->saveConfig('my/config/path', $unique_id, 'default', 0);
i zapisz wartości konfiguracji w core_config_data
. Czy istnieje odpowiednik Magento 2?
php
magento2
configuration
core-config-data
Alan Storm
źródło
źródło
@api
zaznaczone odpowiedzi pojawią się na górze.Nie użyłbym modelu ani modelu zasobów, ale
\Magento\Framework\App\Config\Storage\WriterInterface
lub\Magento\Framework\App\Config\ConfigResource\ConfigInterface
(pierwszy przekazujący do drugiego).Całkiem proste:
źródło
\Magento\Framework\App\Config\Storage\WriterInterface
jest implementowany przez\Magento\Framework\App\Config\Storage\Writer
który z kolei korzysta\Magento\Config\Model\ResourceModel\Config
.Możesz także użyć
\Magento\Config\Model\Config::save
. Poniżej prosta próbka:Ta składnia nie jest „prosta”, ale w niektórych przypadkach jest bezpieczniejsza. Jeśli chodzi o logikę składowania, akcja może być wolniejsza niż bezpośredni dostęp do bazy danych.
W moim przypadku
$value
trzeba je zaszyfrować. Wsystem.xml
ustawiłem model zaplecza dla pola, a logika zapisu szyfruje dane.Edycja:
\Magento\Config\Model\Config::setDataByPath
prostszy w użyciuźródło
Aby uzyskać abstrakcję wysokiego poziomu, wstrzyknąłem
Magento\Framework\App\Config\Storage\WriterInterface
do konstruktora skryptu konfiguracji danych:Następnie użyj
save()
metody, na przykład:Uwagi: Użyj liczby mnogiej zakresów: strony internetowe / sklepy w
Magento\Store\Model\ScopeInterface
źródło
Oto pełna próbka do programowej obsługi konfiguracji Magento 2.
W moim przypadku dodaję również do czyszczenia pamięci podręcznej, w przeciwnym razie zmiany nie pojawią się w Sklep> Konfiguracja .
źródło