0

所以我一直在关注本教程http://drupal.org/node/751826。我采用了以下代码:

<?php
function test_myform(&$form_state) {
  // Access log settings:
  $options = array('1' => t('Enabled'), '0' => t('Disabled'));
  $form['access'] = array(
    '#type' => 'fieldset',
    '#title' => t('Access log settings'),
    '#tree' => TRUE,
  );
  $form['access']['log'] = array(
    '#type' => 'radios',
    '#title' => t('Log'),
    '#default_value' =>  variable_get('log', 0),
    '#options' => $options,
    '#description' => t('The log.'),
  );
  $period = drupal_map_assoc(array(3600, 10800, 21600, 32400, 43200, 86400, 172800, 259200, 604800, 1209600, 2419200, 4838400, 9676800), 'format_interval');
  $form['access']['timer'] = array(
    '#type' => 'select',
    '#title' => t('Discard logs older than'),
    '#default_value' => variable_get('timer', 259200),
    '#options' => $period,
    '#description' => t('The timer.'),
  );
  // Description
  $form['details'] = array(
    '#type' => 'fieldset',
    '#title' => t('Details'),
    '#collapsible' => TRUE,
    '#collapsed' => TRUE,
  );
  $form['details']['description'] = array(
    '#type' => 'textarea',
    '#title' => t('Describe it'),
    '#default_value' =>  variable_get('description', ''),
    '#cols' => 60,
    '#rows' => 5,
    '#description' => t('Log description.'),
  );
  $form['details']['admin'] = array(
    '#type' => 'checkbox',
    '#title' => t('Only admin can view'),
    '#default_value' => variable_get('admin', 0),
  );
  $form['name'] = array(
    '#type' => 'textfield',
    '#title' => t('Name'),
    '#size' => 30,
    '#maxlength' => 64,
    '#description' => t('Enter the name for this group of settings'),
  );
  $form['hidden'] = array('#type' => 'value', '#value' => 'is_it_here');
  $form['submit'] = array('#type' => 'submit', '#value' => t('Save'));
  return $form;
}

function test_page() {
  return drupal_get_form('test_myform');
}
?>

我将此代码粘贴到我的文本字段中。最后,在 php 关闭标记之前,我调用了函数 test_page 如下

test_page();

保存后出现以下错误。

    Warning: Parameter 1 to test_myform() expected to be a reference, value given in drupal_retrieve_form() (line 785 of /var/www/html/includes/form.inc).
    Warning: Parameter 1 to test_myform() expected to be a reference, value given in drupal_retrieve_form() (line 785 of /var/www/html/includes/form.inc).

现在我不知道为什么。基本上我要做的是创建一个网络表单并将其本地保存在服务器上。如果你们除了使用 Drupal Form API 之外还有其他想法,欢迎提出建议。

任何帮助将不胜感激。

4

1 回答 1

4

尝试将 test_myform() 函数中的参数更改为以下

function test_myform($form, &$form_state) {
  ...
}

这样做吗?


在您发表评论后添加答案:

我不确定你在哪里以及如何调用你的函数,所以我无能为力。你为什么不干脆去掉那个 test_page() 函数并从菜单项中调用drupal 表单。

因此,在您的模块中,只需使用以下菜单挂钩:

 /** 
 * Implementation of hook_menu
 */
 function YOUR_MODULE_menu() {

 $items['test/page'] = array(
    'type' => MENU_CALLBACK,
    'title' => t('Your page title'),
    'page callback' => 'drupal_get_form',
    'page arguments' => array('test_myform'),
    'access arguments' => array('view published content'),
 );

 return($items);

}

要对其进行测试,请确保您 1) 启用您的模块,2) 刷新所有缓存以便重建菜单,以及 3) 转到您替换该菜单项的任何内容,在本示例中为 www.yoursite.com/test /page 或 localhost/test/page。我认为这是调用表单功能的更好方法——通过菜单。

那样有用吗?

于 2012-05-16T16:45:10.800 回答