Drupal 7形成“未识别的索引”错误

时间:2013-11-11 19:56:28

标签: forms drupal module drupal-7 form-api

我有一个自定义模块,里面有一个表单:

function emuforms_bistatistics_form($form, &$formstate){
    $form['#id'] = 'bistatistics';

    $form['headings'] = array(
        '#markup' => '<hgroup><h3>Instruction Statistics Form</h3>
        <h4>Please Fill Out Form Completely for Each Instructional Session.</h4></hgroup>'
    );  

   $form['general'] = array(
       '#title' => t('General'),
       '#type' => 'fieldset',
       '#collapsible' => TRUE,
       '#collapsed' => FALSE
   );
   ...etc
}

对于此表单,我创建了一个菜单链接...

function emuforms_menu(){
    $items['emuforms'] = array(
        'title' => 'Forms and Tools 2',
        'page callback' => 'drupal_get_form',
        'page arguments' => array('emuforms_bistatistics'),
        'access callback' => TRUE,
        'type' => MENU_NORMAL_ITEM,
    );
    return $items;
}

...还有一个preprocess()函数......

function emuintranet_preprocess_emuforms_bistatistics_form(&$variables){
    $variables['emuforms_bistatistics'] = array();
    $hidden = array();
    ...etc
}

...还有一个theme()函数

function emuforms_theme(){
    return array(
        'emuforms_bistatistics' => array(
            'render element' => 'form',
        'template' => 'emuforms-bistatistics',
        ),
    );
}

以下是问题: 'page arguments'=&gt;当我以这种方式设置时,array('emuforms_bistatistics')跟随我的自定义.tpl.php文件的链接。但是,我收到了几个错误:

1)注意:未定义的索引:include()中的emuforms_bistatistics(/home/libintranet/htdocs/sites/all/modules/emuforms/emuforms-bistatistics.tpl.php的第9行)。

2)注意:未定义的索引:drupal_retrieve_form()中的emuforms_bistatistics(/home/libintranet/htdocs/includes/form.inc的第764行)。

3)警告:call_user_func_array()期望参数1是有效的回调,函数'emuforms_bistatistics'未找到或drupal_retrieve_form()中的函数名无效(/home/libintranet/htdocs/includes/form.inc的第799行)

另一方面 如果我设置'page arguments'=&gt;数组('emuforms_bistatistics ** _ form **'),我没有错误。但是,路径不再跟随我的.tpl.php文件。相反,它只是直接从_form函数显示我的表单。

1 个答案:

答案 0 :(得分:2)

您传递给page arguments的{​​{1}}应该是一个现有的功能,可以构建&amp;返回一个表单。如果您希望表单使用自定义主题(drupal_get_form),则可以通过设置tpl值在表单中对其进行定义。

菜单

#theme

<强>表格

function emuforms_menu(){
    $items['emuforms'] = array(
        'title' => 'Forms and Tools 2',
        'page callback' => 'drupal_get_form',
        'page arguments' => array('emuforms_bistatistics_form'),
        'access callback' => TRUE,
        'type' => MENU_NORMAL_ITEM,
    );
    return $items;
}