Изменение системных настроек

Здравствуйте, друзья.
Нужно через форму изменять системную настройку с типом поля «Да/Нет»
Кусок формы:
<select name="plist_reverse_default" id="plist_reverse_default" class="custom-select custom-select-sm">
    <option value="0" {if $_modx->config.plist_reverse_default == 0}selected{/if}>Нет</option>
    <option value="1" {if $_modx->config.plist_reverse_default == 1}selected{/if}>Да</option>
</select>
Трудность в том, что при выборе «Да», настройка меняется, но при выборе «Нет» ничего не происходит. Подскажите, что я не так делаю.
Данные сохраняю так:
$settings = array(
        //Тут другие настройки
        'plist_reverse_default' => $plist_reverse_default
    ); 
    foreach($settings as $key => $value) {
        if ($value) {
            $setting = $modx->getObject('modSystemSetting', $key);
            $setting->set('value', $value);
            $setting->save();
        }
    }
Evgeny Epifanov
17 марта 2018, 22:28
modx.pro
1 666
0

Комментарии: 4

Evgeny Epifanov
18 марта 2018, 13:21
-1
Как-то странно…
В общем поставил тип поля «Текст» и тоже не сохраняет значение. Т.е. «1» сохраняется, а «0» — нет.
Ну, и ладно. Сделал через «yes/no». Так работает.
    Aleksandr Huz
    18 марта 2018, 15:36
    -1
    Попробуйте после сохранения сбросить кеш:
    $modx->cacheManager->refresh(array('system_settings' => array()));
      Іван Клімчук
      18 марта 2018, 15:52
      0
      У вас проблема в if ($value) {}, потому что PHP усерднее учить нужно. Если из формы приходит ноль, то if (0) никогда не выполнится, а сохранение настроек у вас только внутри условия. Следовательно если да (1) — работает, нет (0) — нет.
        Evgeny Epifanov
        18 марта 2018, 16:23
        0
        Спасибо за разъяснение.
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        4