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

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

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

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...
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.