Je veux avoir des boutons pour supprimer le champ sélectionné du formulaire.
$form['questions']['buttons'][$counter] = array(
'#type' => 'button',
'#name' =>'button_'.$counter,
'#value' => t('Remove'),
'#submit' => array('my_mod_remove_submit'),
);
Soumettre la fonction:
function my_mod_remove_submit($form, &$form_state) {
drupal_set_message('<pre>'.print_r($form_state, 1).'</pre>');
}
Mais il semble que cette fonction ne soit jamais invoquée.
Je pense que vous souhaitez gérer plusieurs boutons Soumettre associés à leurs données pour effectuer des opérations à ce sujet.
La meilleure approche consiste à utiliser des cases à cocher avec un seul bouton d'envoi.
par exemple.
function my_form(){
$data_ids = array();
foreach($data_set as $data){
$data_ids[$data] = '';
$form['data']['data_preview'][$data['id']] = array('#value' => $data['value']);
}
$form['selection'] = array(
'#type' => 'checkboxes'
'#options' => $data_ids;
);
$form['process'] = array(
'#type' => 'submit',
'#value' => 'do',
);
$form['#theme'] = 'my_form';
}
Hangler à thème (n'oubliez pas de mettre en œuvre my_form
Entrée dans hook_theme
)
function theme_my_form($form = array()){
$rows = array();
foreach(element_children($form['selection']) as $id) {
$fields = array();
$fields[] = drupal_render($form['selection'][$id]);
$fields[] = drupal_render($form['data']['data_preview'][$id]);
$rows[] = $fields;
}
$output = theme('table', array('Select', 'Data'), $rows);
$output .= drupal_render($form);// Render rest of form
return $output;
}
Maintenant former le gestionnaire de soumission
function my_form_submit(&$form, $form_state){
$clicked_button = $form_state['clicked_button']['#value'];
$values = $form_state['values'];
if ($clicked_button == $values['process']){
//Here check $value['selection'] array and process accordingly
}
}