Drupal 7: Как сохранить значения форм с помощью system_settings_form ()?

Я хочу создать простую форму настроек для строящегося модуля.

В настоящее время у меня есть только набор полей и один флажок:

function my_module_settings() {
$form = array();

$config = my_module_default_settings();

$form['my_module_settings'] = [
'#type' => 'fieldset',
'#title' => t('Script options'),
'#collapsible' => TRUE,
'#collapsed' => TRUE,
'#group' => 'script_config',
];

$form['my_module_settings']['my_module_setting_scripts'] = array(
'script_on' => array(
'#type' => 'checkbox',
'#title' => t('Enable Scripts'),
'#default_value' => !empty($config['script_on']) ? $config['script_on'] : FALSE,
'#group' => 'script_config',
),
);

return system_settings_form($form);
}

Это делает рендеринг, но если установить флажок и нажать «Сохранить», в форме ничего не сохраняется.

Как я могу убедиться, что мои данные формы сохраняются?

2

Решение

Когда используешь system_settings_form()данные формы сохраняются в {variable} таблица базы данных, используя ключи формы для именования переменных.

Когда форма отправлена, system_settings_form обработчик отправки не будет использовать ‘Script_on’ но ключ формы.

Эта функция добавляет в форму обработчик отправки и кнопку отправки.
массив. Функция submit сохраняет все данные в форме, используя
variable_set (), для переменных, названных так же, как ключи в форме
массив. Обратите внимание, что это означает, что вы обычно должны префикс вашего массива формы
ключи с именем вашего модуля, чтобы они были уникальными при передаче в
variable_set ().

Это позволяет использовать variable_get('form_key') чтобы получить данные формы, то есть в вашем случае вы можете напрямую отобразить такие вещи, как:

'#default_value' => variable_get('my_module_setting_scripts', !!$config['script_on']);

.. здесь с троичным выражением «ярлык» (!!) для резервной настройки.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector