Drupal 6,FAPI表格提交两次,为什么?

时间:2011-05-26 11:11:56

标签: drupal-6 drupal-fapi

使用此代码:

drupal_set_message('form id: ' .$form_id. ' send with '. $delta . ' and field: '. $field);

我注意到每次点击“发送”按钮时,表单都会提交两次,所以我看到这样的内容:

  

表单id:formname2发送3和   字段xxx表单id:formname2发送   4和字段xxx

$ delta,即更改的那个,是cck多组字段的增量(我将新字段插入到cck内容中)。这是提交功能:

function IngredientsForm_submit($form, &$form_state){
    global $user;
    $ls_id = $user->ls_id;
    $current_ls = node_load($ls_id);    
    $delta = $form_state['values']['delta'];
    $field = $form_state['values']['field_name'];
    $form_id = $form_state['values']['form_id'];
    $current_ls->field_descrizione_ingrediente[$delta]['value'] = $field;
    drupal_set_message('form id: ' .$form_id. ' send with delta: '. $delta . ' and field: '. $field);
    node_save($current_ls);             
}

奇怪的是,只有第一次提交似乎保存在数据库中,所以保存的数据是正确的......

知道为什么会出现双重问题?

2 个答案:

答案 0 :(得分:1)

我会检查表单变量,看看是否多次列出了submit函数。这可能是$ form ['#submit']或$ form ['buttons'] ['submit'] ['#submit'],具体取决于这是自定义表单还是默认节点表单。

看来提交函数被调用了两次,但node_save正在进行更新而不是插入,因此数据库显示正确。

如果您没有看到调用的重复提交处理程序,那么可能会发布构建/更改表单的代码。

答案 1 :(得分:1)

我遇到了同样类型的问题,我认为这是drupal处理表单的方式。如果您移动以下行

drupal_set_message('form id: ' .$form_id. ' send with delta: '. $delta . ' and field: '. $field);"
保存数据后,

进入提交功能,您会发现该消息只会显示一次。