Плагин Shopware 6: значение конфигурации неверно после обновления из-за удаления ключа конфигурацииPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Гость
 Плагин Shopware 6: значение конфигурации неверно после обновления из-за удаления ключа конфигурации

Сообщение Гость »


У меня есть плагин, который обрабатывает значение конфигурации для автоматической публикации обзоров (reviewModeration). В версии 1.6.3 я добавил новый ключ конфигурации autoPublishStars. Кроме того, я хочу полностью удалить reviewModeration в версии 1.6.4.

config.xml

reviewSkipModeration Автоматически принимать отзывы Автоматическая бесплатная доставка истина autoPublishStars Автоматическая публикация обзора со звездочками Стерне vorausgewählt 0 Нет Нет Кейне 0 0 звезд 0 Штерн 1 1 звезда 1 корма 2 2 звезды 2 Стерна 3 3 звезды 3 Стерна 4 4 звезды 4 Стерн 5 5 звезд 5 Стернов Функция обновления содержит логику для переноса старой конфигурации в новую:

обновление публичной функции (UpdateContext $context): void { родитель::обновление($контекст); // Получаем текущую установленную версию $version = $context->getCurrentPluginVersion(); // Обновляем конфигурацию только в версии 1.6.3 или выше if (version_compare($version, '1.6.3', '>=')) { // Получаем сервис конфигурации из контейнера $configService = $this->container->get('Shopware\Core\System\SystemConfig\SystemConfigService'); // Получаем текущее значение конфигурации $previousConfigVal = $configService->getBool('SwagPlugin.config.reviewModeration'); $newConfigVal = $previousConfigVal? '0': 'Нет'; // Устанавливаем указанное значение по умолчанию $configService->set('SwagPlugin.config.autoPublishStars', $newConfigVal); } } Это отлично работает при обновлении с 1.6.2 -> 1.6.3. Однако при обновлении с 1.6.3 -> 1.6.4, поскольку старый ключreviewModeration больше не существует, для autoPublishStars устанавливается значение None. независимо от предыдущего значения autoPublishStars:
[*]У пользователя включен reviewModeration (true) в версии 1.6.2 [*]Обновление до версии 1.6.3 полностью переносит новый ключ autoPublishStars [*]Обновление до версии 1.6.4 проверяет старый ключ reviewModeration, autoPublishStars получает значение false, инвертирует значение [*]v1.6.4 устанавливает для autoPublishStars значение false, хотя в версии 1.6.3 это значение true
Как предотвратить это неправильное переключение при рефакторинге ключей конфигурации в разных версиях плагина? Я хочу прочитать старый ключ только при первом обновлении, а не при последующих. Первой версией обновления может быть v1.7.8 (не обязательно 1.6.3), например, когда пользователь обновляется с версии 1.1.1 до версии 1.7.8.

Любая помощь приветствуется!
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»