【发布时间】:2013-11-23 17:59:57
【问题描述】:
我有一个自定义模块,里面有一个表单:
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' => 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' => array('emuforms_bistatistics**_form**'),我不会收到任何错误。但是,路径不再跟随我的 .tpl.php 文件。相反,它只是直接从 _form 函数显示我的表单。
【问题讨论】:
标签: forms drupal module drupal-7 form-api