Изменение системных настроек
Здравствуйте, друзья.
Нужно через форму изменять системную настройку с типом поля «Да/Нет»
Кусок формы:
Данные сохраняю так:
Нужно через форму изменять системную настройку с типом поля «Да/Нет»
Кусок формы:
<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();
}
}
Комментарии: 4
Как-то странно…
В общем поставил тип поля «Текст» и тоже не сохраняет значение. Т.е. «1» сохраняется, а «0» — нет.
Ну, и ладно. Сделал через «yes/no». Так работает.
В общем поставил тип поля «Текст» и тоже не сохраняет значение. Т.е. «1» сохраняется, а «0» — нет.
Ну, и ладно. Сделал через «yes/no». Так работает.
Попробуйте после сохранения сбросить кеш:
$modx->cacheManager->refresh(array('system_settings' => array()));
У вас проблема в if ($value) {}, потому что PHP усерднее учить нужно. Если из формы приходит ноль, то if (0) никогда не выполнится, а сохранение настроек у вас только внутри условия. Следовательно если да (1) — работает, нет (0) — нет.
Спасибо за разъяснение.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.