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


14

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');
}

Risposte:


14

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) per cui si desidera utilizzare la funzione di invio.

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

quindi come posso aggiungere il gestore di invio al pulsante Continua?
Ahmad,

1
Credo che sia $form['buttons']['continue']['#submit'][] = ..possibile controllare la variabile del modulo e scoprirlo.
googletorp

Ma voglio che la mia funzione di invio venga eseguita prima della sua funzione di invio? Come potrei farlo?
Ahmad,

Questa è una nuova domanda. I commenti non sono pensati per porre / rispondere a domande.
googletorp

6

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');

Per riferimento, la raffinata domanda è nei commenti della risposta di googletorp.
rooby

1

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...
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.