Làm cách nào để thêm trình xử lý gửi bổ sung trong biểu mẫu thanh toán thương mại?


14

Làm cách nào để thêm trình xử lý trình bổ sung? Tôi đã thử điều này nhưng nó không hoạt động.

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

Câu trả lời:


14

Những gì bạn đang làm là chính xác.

Vấn đề là Drupal Commerce đã xác định hành động gửi trên các nút được nhấp, sẽ được sử dụng thay cho trình xử lý gửi được xác định trên chính biểu mẫu. Vì vậy, bạn cần thêm trình xử lý gửi của mình vào các nút (Hủy, Tiếp tục) mà bạn muốn sử dụng chức năng gửi của mình.

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

vậy làm cách nào để thêm trình xử lý trình vào nút Tiếp tục?
Ahmad

1
Tôi tin rằng đó là $form['buttons']['continue']['#submit'][] = ..Bạn có thể kiểm tra biến mẫu và tìm hiểu.
googletorp

Nhưng tôi muốn rằng chức năng gửi của tôi nên thực hiện đầu tiên hơn chức năng gửi của chính nó? Làm thế nào tôi có thể làm điều này?
Ahmad

Đó là một câu hỏi mới. Nhận xét không có nghĩa là để hỏi / trả lời câu hỏi.
googletorp

6

Để nhanh chóng trả lời câu hỏi tinh tế của Ahmad - cách thêm chức năng gửi tùy chỉnh của anh ấy TRƯỚC KHI các chức năng gửi khác:

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

Để tham khảo, câu hỏi tinh tế là trong các ý kiến ​​của câu trả lời từ googletorp.
rooby

1

Sử dụng mã sau đây để thêm trình xử lý gửi thêm vào biểu mẫu. Nó làm việc cho tôi:

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...
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.