Jak dodać dodatkowy moduł obsługi zgłoszeń w formularzu kasy handlu?

14

Jak dodać dodatkowy moduł obsługi zgłoszeń? Próbowałem tego, ale to nie zadziałało.

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');
}
Ahmad
źródło

Odpowiedzi:

14

To, co robisz, jest poprawne.

Problem polega na tym, że Drupal Commerce zdefiniował akcję przesyłania na klikniętych przyciskach, która będzie używana zamiast programów obsługi przesyłania zdefiniowanych w samym formularzu. Musisz zatem dodać moduły obsługi przesyłania do przycisków (Anuluj, Kontynuuj), z których chcesz korzystać z funkcji przesyłania.

$form['buttons']['continue']['#submit'][]='c_coupon_review_submit';
googletorp
źródło
więc jak mogę dodać moduł obsługi przesłania do przycisku Kontynuuj?
Ahmad
1
Uważam, że $form['buttons']['continue']['#submit'][] = ..możesz sprawdzić zmienną formularza i dowiedzieć się.
googletorp
Ale chcę, aby moja funkcja przesyłania była wykonywana jako pierwsza niż własna funkcja przesyłania? Jak mogłem to zrobić?
Ahmad,
To nowe pytanie. Komentarze nie są przeznaczone do zadawania / odpowiadania na pytania.
googletorp
6

Aby szybko odpowiedzieć na wyrafinowane pytanie Ahmada - jak dodać niestandardową funkcję przesyłania PRZED innymi funkcjami przesyłania:

if ( empty($form['buttons']['continue']['#submit']) ) {
    $form['buttons']['continue']['#submit'] = array(); // just in case
}
array_unshift($form['buttons']['continue']['#submit'],'c_coupon_review_submit');
Giles B
źródło
Dla porównania, dopracowane pytanie znajduje się w komentarzach odpowiedzi od googletorp.
rooby
1

Użyj następującego kodu, aby dodać dodatkową procedurę obsługi przesyłania do formularza. To działało dla mnie:

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...
}
Astha Chauhan
źródło