Прежде всего это то, что system_settings_form_submit
делает, когда вы нажимаете кнопку Сброс до значений по умолчанию . Он вызывает variable_del
, который удалит все определенные вами переменные в форме из таблицы variables
.
Теперь значение #default
вашей формы, вероятно, заполнено, потому что вы делаете что-то вроде этого:
global $faculty_detail_template_default;
$form = array (
'#default_value' => variable_get('faculty_detail_template', $faculty_detail_template_default),
);
Не понимаю, почему вы настаиваете на добавлении значения по умолчанию в таблицу variables
. Весь этот подход несовершенен. Просто используйте variable_get($name, $default)
везде, где ваш код зависит от faculty_detail_template
. Именно для этого и используется второй параметр этой функции: $default The default value to use if this variable has never been set.
Так что для Drupal отсутствие переменной в таблице variable
означает, что кодеру решать, как обрабатывать этот случай (например, указать значение по умолчанию). Значение по умолчанию, указанное с помощью variable_get
.
Во-вторых, если вы использовали system_settings_form
, то у вас уже есть функция отправки, упомянутая выше (system_settings_form_submit
), поэтому ваш faculty_submit
не будет вызываться, если вы не добавите его специально в массив обратных вызовов submit быть казненным. Примерно так:
$form['#submit'][] = 'faculty_submit';
return system_settings_form($form);
Кстати, использование глобальных переменных - плохая идея (в общем), и вы должны стараться избегать их использования. Для этого и используются переменные :) Куски информации, которые можно найти в разных частях кода. Поэтому вместо этого добавьте файл .install
в свой модуль, и в этом файле вы определите эти глобальные переменные , используя variable_set
. Это намного чище, чем просто магически выдвигать некоторые глобальные переменные в середине кода.