Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Drupal 7:如何使用system_settings_form()保存表单值?_Php_Drupal_Drupal 7 - Fatal编程技术网

Php Drupal 7:如何使用system_settings_form()保存表单值?

Php Drupal 7:如何使用system_settings_form()保存表单值?,php,drupal,drupal-7,Php,Drupal,Drupal 7,我想为我正在构建的模块设置一个简单的设置表单 目前,我只有一个字段集和一个复选框: function my_module_settings() { $form = array(); $config = my_module_default_settings(); $form['my_module_settings'] = [ '#type' => 'fieldset', '#title' => t('Script options'), '#col

我想为我正在构建的模块设置一个简单的设置表单

目前,我只有一个字段集和一个复选框:

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);
}
这会进行渲染,但选中复选框并单击“保存”实际上不会在表单中保存任何内容


如何确保表单数据保存?

使用
系统设置\u表单()
时,表单数据保存在
{variable}
数据库表中,使用表单键命名变量

提交表单时,
system\u settings\u表单
submit处理程序不会使用“script\u on”,而是使用表单键

此函数向表单添加提交处理程序和提交按钮 数组。submit函数使用保存表单中的所有数据 变量_set(),指向与表单中的键名相同的变量 数组。请注意,这意味着您通常应该为表单数组添加前缀 具有您的模块名称的键,以便在传入时它们是唯一的 变量_set()

这允许使用
variable\u get('form\u key')
获取表单数据,这意味着在您的情况下,您可以直接映射以下内容:

'#default_value' => variable_get('my_module_setting_scripts', !!$config['script_on']);
。。这里使用三元表达式“快捷方式”(!!)作为回退设置