没有form_id的表单(Drupal 6.x)

时间:2010-12-24 13:10:02

标签: forms drupal-6

我将此表单放在块中,并将其分配到我站点的右侧区域。表格显示得很好。但是提交按钮不能按预期工作 - 调用提交功能。所以,我做了一些调试,发现一个异常,没有必要的数据 - 比如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,"..............");   
}

提前致谢

2 个答案:

答案 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';

它应该有用。