我将此表单放在块中,并将其分配到我站点的右侧区域。表格显示得很好。但是提交按钮不能按预期工作 - 调用提交功能。所以,我做了一些调试,发现一个异常,没有必要的数据 - 比如form_id和tokens - drupal通常会注入到每个表单中。由于我无法弄清楚这个的根本原因,我来这里是为了指点朋友。这是我的代码的摘录 -
function mymodule_block($op = 'list', $delta = '', $edit = array()) {
switch ($op) {
case 'list':
$blocks['quick_search'] = array(
'info' => t('Quick Search'),
);
return $blocks;
case 'view':
switch ($delta) {
case 'quick_search':
$block['subject'] = t('Quick Search');
$block['content'] = drupal_get_form("block_quick_search");
break;
}
return $block;
}
}
function block_quick_search(&$form_state){
$form = array();
.
.
.
$form['quick_search_submit'] = array(
'#type' => 'submit',
'#value' => t('Search'),
'#submit' => array('mymodule_quick_search'),
);
return $form;
}
function mymodule_quick_search($form, &$form_state){
drupal_goto($base_path,"..............");
}
提前致谢
答案 0 :(得分:1)
没有基本数据 - 例如form_id和tokens
这确实是表单提交未正确处理的原因。检查表单上是否调用drupal_prepare_form以及是否正确添加这些项目。 drupal_get_form如果未发布表单(因此未从缓存中检索),则由{{3}}调用。
如果正确添加$form['#token']
和$form['form_id']
,我怀疑将表单翻译为HTML有问题。你是否对表格使用任何自定义主题?
答案 1 :(得分:0)
尝试将提交处理程序传递给主表单,而不是像提交那样提交项目:
$form['#submit'][] = 'mymodule_quick_search';
它应该有用。