问题描述
|
使用此代码:
drupal_set_message(\'form id: \' .$form_id. \' send with \'. $delta . \' and field: \'. $field);
我注意到,每当我单击£send \“按钮时,表单都会提交两次,因此我看到如下内容:
表单ID:formname2发送3和
字段xxx表单ID:formname2发送
4和字段xxx
$ delta是一个变化的cdel多组字段的变化量(我正在将新字段插入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);
}
奇怪的是,似乎只有第一次提交的东西才保存在数据库中,所以保存的数据是正确的...
知道为什么要重复提交吗?
解决方法
我将检查form变量,看看是否多次列出了commit函数。这可能是$ form [\'#submit \']或$ form [\'buttons \'] [\'submit \'] [\'#submit \'],具体取决于这是自定义表单还是默认表单节点形式。
似乎两次调用了commit函数,但是node_save正在执行更新而不是插入操作,因此数据库看起来正确。
如果没有看到重复的提交处理程序,则可以发布构建/更改表单的代码。
,我遇到过相同类型的问题,我认为这是drupal流程形成的方式。如果您移动以下行
drupal_set_message(\'form id: \' .$form_id. \' send with delta: \'. $delta . \' and field: \'. $field);\"
保存数据后,将其放入提交功能后,您会发现该消息只会显示一次。