Есть ли в Magento 2 абстракция высокого уровня, позволяющая программистам конечных пользователей обновлять значения конфигурации в core_config_data
таблице? Или использование прямого SQL - единственный способ сделать это в Magento 2?
то есть в Magento 1, вы могли бы сделать что-то вроде этого
$config_model = new Mage_Core_Model_Config();
$config_model->saveConfig('my/config/path', $unique_id, 'default', 0);
и сохраните значения конфигурации в core_config_data
. Есть ли эквивалент в Magento 2?
php
magento2
configuration
core-config-data
Алан Сторм
источник
источник
@api
отмеченные ответы подниматься вверх.Я бы не использовал модель или модель ресурсов, но
\Magento\Framework\App\Config\Storage\WriterInterface
или\Magento\Framework\App\Config\ConfigResource\ConfigInterface
(первое делегирование второму).Довольно просто тоже:
источник
\Magento\Framework\App\Config\Storage\WriterInterface
что реализован,\Magento\Framework\App\Config\Storage\Writer
который в свою очередь использует\Magento\Config\Model\ResourceModel\Config
.Вы также можете использовать
\Magento\Config\Model\Config::save
. Ниже приведен простой пример:Этот синтаксис не является «простым», но в некоторых случаях он более безопасен. Из-за логики сохранения, действие может быть медленнее, чем прямой доступ к БД.
В моем случае
$value
нужно зашифровать. Вsystem.xml
, я установил модель поля для поля, и логика сохранения шифрует данные.Редактировать:
\Magento\Config\Model\Config::setDataByPath
более простой в использованииисточник
Для высокого уровня абстракции я бы вставил
Magento\Framework\App\Config\Storage\WriterInterface
в конструктор сценария настройки данных:Затем используйте
save()
метод, например:Примечания: Используйте форму множественного числа областей: веб-сайты / магазины в
Magento\Store\Model\ScopeInterface
источник
Вот полный пример программного управления Magento 2.
В моем случае я тоже добавляю в очистить кеш, иначе изменения не отображаются в Store> Config .
источник