Verfügt Magento 2 über eine übergeordnete Abstraktion, mit der Endbenutzerprogrammierer Konfigurationswerte in der core_config_data
Tabelle aktualisieren können ? Oder ist gerade SQL die einzige Möglichkeit, dies in Magento 2 zu tun?
dh in Magento 1 könnten Sie so etwas tun
$config_model = new Mage_Core_Model_Config();
$config_model->saveConfig('my/config/path', $unique_id, 'default', 0);
und speichern Sie die Konfigurationswerte in core_config_data
. Gibt es in Magento 2 ein Äquivalent?
php
magento2
configuration
core-config-data
Alan Storm
quelle
quelle
@api
markierte Antwort nach oben sprudelt.Ich würde kein Modell oder Ressourcenmodell verwenden, aber
\Magento\Framework\App\Config\Storage\WriterInterface
oder\Magento\Framework\App\Config\ConfigResource\ConfigInterface
(die erste Delegierung an die zweite).Ganz einfach auch:
quelle
\Magento\Framework\App\Config\Storage\WriterInterface
wird umgesetzt\Magento\Framework\App\Config\Storage\Writer
was wiederum nutzt\Magento\Config\Model\ResourceModel\Config
.Sie können auch verwenden
\Magento\Config\Model\Config::save
. Unten ein einfaches Beispiel:Diese Syntax ist nicht "einfach", aber in manchen Fällen sicherer. Aufgrund der Speicherlogik ist die Aktion möglicherweise langsamer als der direkte Zugriff auf die Datenbank.
In meinem Fall
$value
muss verschlüsselt werden. In habesystem.xml
ich das Backend-Modell für das Feld festgelegt und die Sicherungslogik verschlüsselt die Daten.Bearbeiten:
\Magento\Config\Model\Config::setDataByPath
einfacher zu bedienenquelle
Für eine Abstraktion auf hoher Ebene würde ich
Magento\Framework\App\Config\Storage\WriterInterface
in den Konstruktor eines Daten-Setup-Skripts einfügen:Dann verwenden Sie die
save()
Methode, zum Beispiel:Anmerkungen: Verwenden Sie die Pluralform der Bereiche: Websites / Stores in
Magento\Store\Model\ScopeInterface
quelle
Hier ein vollständiges Beispiel für die programmgesteuerte Verwaltung der Magento 2-Konfiguration.
In meinem Fall füge ich hinzu, um den Cache zu leeren . Andernfalls werden die Änderungen nicht in Store> Config angezeigt .
quelle