Forms Drupal 7-同一表单上的多个图像按钮会导致错误的“;单击“U按钮”;价值

Forms Drupal 7-同一表单上的多个图像按钮会导致错误的“;单击“U按钮”;价值,forms,drupal,drupal-7,drupal-form-submission,Forms,Drupal,Drupal 7,Drupal Form Submission,因此,我有一个表单,它创建了几个控制按钮,用于确认、编辑或删除关联项。这些按钮都是图像按钮,具有不同的提交处理程序、不同的名称、id等。该表单是为db_select调用的结果复制的,因此每个返回的行都有表单控件 但是,无论我在表单中单击哪个按钮,当我检查提交处理程序并打印出“clicked_button”时,值总是错误的……它甚至位于错误的行项目上。例如,我有第1行和第2行,如果我单击第2行按钮,它将显示在与我单击的按钮不同的处理程序中(编辑与确认),id将显示为“第1行” 代码如下: func

因此,我有一个表单,它创建了几个控制按钮,用于确认、编辑或删除关联项。这些按钮都是图像按钮,具有不同的提交处理程序、不同的名称、id等。该表单是为db_select调用的结果复制的,因此每个返回的行都有表单控件

但是,无论我在表单中单击哪个按钮,当我检查提交处理程序并打印出“clicked_button”时,值总是错误的……它甚至位于错误的行项目上。例如,我有第1行和第2行,如果我单击第2行按钮,它将显示在与我单击的按钮不同的处理程序中(编辑与确认),id将显示为“第1行”

代码如下:

function mymodule_admin_controls($form,&$form_state, $row_id, $status){

     $form['store']= array(
        '#type' => 'value',
        '#value' => $row_id,
     );

     if("PENDING" == $status){

        $form['confirm'.$row_id] = array(
            '#name' => 'confirm_btn_'.$row_id,
            '#type' => 'image_button',
            '#src' => 'images/check_16.png',
            '#value' => 'Confirm',
            '#submit' => array('mymodule_admin_controls_submit_confirm'),
            '#attributes' => array('title' => 'Confirm'),
        );

        $form['edit'.$row_id] = array(
            '#name' => 'edit_btn_'.$row_id,
            '#type' => 'image_button',
            '#src' => 'images/edit_16.png',
            '#value' => 'Edit',
            '#attributes' => array(
                'class' => array('admin-controls'), 
                'title' => 'Edit'),
            '#submit' => array('mymodule_admin_controls_submit_edit'),
        );  

    }

    if("PENDING" == $status || "CONFIRMED" == $status){

        $form['delete'.$row_id] = array(
            '#name' => 'delete_btn_'.$row_id,
            '#type' => 'image_button',
            '#src' => 'images/delete_16.png',
            '#default_value' => 'Cancel',
            '#attributes' => array('class' => array('admin-controls'), 
                            'title' => 'Cancel'),
            '#submit' => array('mymodule_admin_controls_submit_cancel'),
        );
     }else{

        $form['statuschange_btn'.$row_id] = array(
            '#name' => 'statuschange_btn_'.$row_id,
            '#type' => 'image_button',
            '#src' => 'images/previous_16png.png',
            '#default_value' => 'Change Status',
            '#attributes' => array(
                            'class' => array('admin-controls'), 
                            'title' => 'Change Status'),
            '#submit' => array('mymodule_admin_controls_submit_status'),
        );
    }
    return $form;
}
在提交处理程序中,我为每个

function mymodule_admin_controls_submit_confirm($form, &$form_state) {
$row_id = $form_state['values']['store'];

print '<pre>'; var_dump($row_id); print '</pre>';
print '<pre>'; print "Called mymodule_admin_controls_submit_confirm"; var_dump($form_state); print '</pre>';
exit;
}

我做错了什么?

欢迎参加聚会:这件事从2008年就开始了,至今仍未解决?!决定……不。解决了…是的:)我没有重读整件事,但如果我没记错的话,你在每个图像按钮元素上设置了一个唯一的
#name
属性,这解决了问题我做到了…对于第一行结果,解决了问题,对于任何后续行,总是返回错误的按钮和行…您是否尝试过#34中的解决方案?看起来很熟悉
["clicked_button"]=>
  array(24) {
["#name"]=>
string(14) "confirm_btn_11"
["#type"]=>
string(12) "image_button"
["#src"]=>
string(59) "images/check_16.png"
["#default_value"]=>
string(7) "Confirm"
["#submit"]=>
array(1) {
  [0]=>
  string(41) "mymodule_admin_controls_submit_confirm"
}
["#attributes"]=>
array(1) {
  ["title"]=>
  string(7) "Confirm"
}
["#input"]=>
bool(true)
["#button_type"]=>
string(6) "submit"
["#executes_submit_callback"]=>
bool(true)
["#limit_validation_errors"]=>
bool(false)
["#process"]=>
array(1) {
  [0]=>
  string(17) "ajax_process_form"
}
["#return_value"]=>
bool(true)
["#has_garbage_value"]=>
bool(true)
["#theme_wrappers"]=>
array(1) {
  [0]=>
  string(12) "image_button"
}
["#defaults_loaded"]=>
bool(true)
["#tree"]=>
bool(false)
["#parents"]=>
array(1) {
  [0]=>
  string(9) "confirm11"
}
["#array_parents"]=>
array(1) {
  [0]=>
  string(9) "confirm11"
}
["#weight"]=>
float(0.001)
["#processed"]=>
bool(false)
["#required"]=>
bool(false)
["#title_display"]=>
string(6) "before"
["#id"]=>
string(14) "edit-confirm11"
["#value"]=>
NULL
  }