it-swarm.it

Come faccio ad aggiungere un gestore di invio aggiuntivo nel modulo di pagamento commerciale?

Come faccio ad aggiungere un gestore di invio aggiuntivo? Ho provato questo ma non ha funzionato.

function c_coupon_form_alter(&$form, $form_state, $form_id) {
  drupal_set_message($form_id);
  switch($form_id) {
     case 'commerce_checkout_form_review':
      drupal_set_message($form_id . '_form submit');
      $form['#submit'][] = 'c_coupon_review_submit';
  }
}

function c_coupon_review_submit($form, &$form_state) {
  drupal_set_message('submitted');
}
15
Ahmad

Quello che stai facendo è corretto.

Il problema è che Drupal Commerce ha definito l'azione di invio sui pulsanti su cui si fa clic, che verrà utilizzata al posto dei gestori di invio definiti nel modulo stesso. Quindi è necessario aggiungere i gestori di invio ai pulsanti (Annulla, Continua) che si desidera utilizzare la funzione di invio.

$form['buttons']['continue']['#submit'][]='c_coupon_review_submit';
15
googletorp

Per rispondere rapidamente alla raffinata domanda di Ahmad: come aggiungere la sua funzione di invio personalizzata PRIMA di altre funzioni di invio:

if ( empty($form['buttons']['continue']['#submit']) ) {
    $form['buttons']['continue']['#submit'] = array(); // just in case
}
array_unshift($form['buttons']['continue']['#submit'],'c_coupon_review_submit');
6
Giles B

Utilizzare il codice seguente per aggiungere un gestore di invio aggiuntivo a un modulo. Ha funzionato per me:

function mymodule_form_alter(&$form, &$form_state, $form_id) {
        if ($form_id == 'xyz') {
            $form['#submit'][] = 'webform_extra_submit_test';
        }
    }

function webform_extra_submit_test($form, &$form_state) {
    global $user;
    $user_id = $user->uid; 
    // do code here $form_state['values'] etc...
}
1
Astha chauhan