web-gelistirme-sc.com

Drupal 7] 'de web formu gönderimini nasıl ajax edebilirim?

Ben bir yere '#ajax' ekleyebilirsiniz böylece özel bir modül hook_form_alter() ve hook_node_view() kullanarak webform oluşturma değiştirmeye çalıştım.

D6 veya D7'de webform ve ajax ile çalışma deneyimi olan var mı? Sanırım mantık D6 ve D7 için aynı olurdu, o zaman sadece uygulama değişir.

8

Ajax Modülü benim için Drupal 6] içinde çalışır.

Drupal 7 için:

function mymodule_form_alter(&$form, &$form_state, $form_id) {
      // see if webform_client_form_ is in the form_id
      if(strstr($form_id, 'webform_client_form_')) {
        // get the nid so we can use it in the wrapper value
        $nid = $form['#node']->nid;
        // add the ajax properties to the submit button
        $form['actions']['submit']['#ajax'] = array(
          'callback' => 'mymodule_webform_js_submit',
          'wrapper' => 'webform-client-form-' . $nid,
          'method' => 'replace',
          'effect' => 'fade',
        );
      }
    }

function mymodule_webform_js_submit($form, $form_state) {
      // define the $sid variable (submission id from webform)
      $sid = $form_state['values']['details']['sid'];
      // if we have a sid then we know the form was properly submitted, otherwise, we'll just return the existing $form array
      if ($sid) {
        // first we have to load up the webform node object
        $node = node_load($form_state['values']['details']['nid']);
        // create an array up with the confirmation message, retreived from the webform node
        $confirmation = array(
          '#type' => 'markup',
          '#markup' => check_markup($node->webform['confirmation'], $node->webform['confirmation_format'], '', TRUE),
        );
        // return the confirmation message
        return $confirmation;
      }
      else {
        // return the form
        return $form;
      }
    }
8
Matthew Woodard

Sadece belirli bir formu ajaxify istiyorsanız kolay yoldan biri jquery form eklentisi eklemek olacaktır. Oldukça düz ileri.

Template.php dosyasındaki sayfa önişleme işlevine aşağıdaki kodu ekleyin.

  1. Önce jquery eklentisini aşağıdaki kodla ekleyin.

    drupal_add_js (drupal_get_path ('tema', 'temanız'). "/js/jquery.form.js");

  2. Ardından aşağıdaki kodu ekleyin, #your_form_ID form kimliğinizle

    drupal_add_js ('

                (function($){ 
    $(document).ready(function() { 
    
                $("#your_form_ID").ajaxForm(function() { 
                    alert("Thank you for your comment!"); 
                }); 
    });     }(jQuery));;
    
           ', 'inline');
    

Tüm yapmanız gereken bu. Belki de komut dosyalarını yalnızca ihtiyacınız olan sayfaları yüklemeyi düşünebilirsiniz.

0
esafwan