Drupal 8 Custom Form Отправить переопределить с помощью Javascript - PullRequest
1 голос
/ 08 июля 2019

Я написал собственный модуль в Drupal 8, который имеет интеграцию JavaScript с Paymetric.Я обрабатываю отправку этой формы с помощью javascript, однако проблема в том, что она запускает проверку формы, но никогда не отправляет форму.С другой стороны, когда я отправляю его с помощью настраиваемой кнопки отправки drupal, он проходит нормально.Я обрабатываю отправку формы с помощью javascript в нескольких других моих модулях без каких-либо проблем.Может кто-нибудь, пожалуйста, помогите мне выяснить, почему это происходит?

Проверено, есть ли какое-либо скрытое поле, которое является обязательным и ограничивает нас в отправке формы, также проверено на наличие ошибок javascript в консоли, я убиваюкеш на построение формы и конструирование, если это может повлиять каким-либо образом.Также удостоверился, что форма с правильным ID взята и отправлена.

Вот мой код:

Custom Module File:
/*
 -- namespace defined and Drupal/Symphony classes used --
*/
class PurchaseCartContact extends FormBase {
  protected $account;
  protected $tempStore;
  protected $messenger;

  public function __construct(
    AccountInterface $account,
    PrivateTempStoreFactory $tempStore,
    MessengerInterface $messenger
  ) {

    \Drupal::service('page_cache_kill_switch')->trigger();

    $this->account      = $account;
    $this->tempStore    = $tempStore->get('org_purchases');
    $this->messenger    = $messenger;
  }

  public static function create(ContainerInterface $container) {
    return new static(
      $container->get('current_user'),
      $container->get('tempstore.private'),
      $container->get('messenger')
    );
  }

  public function getFormId() {
    return 'purchase_cart_contact';
  }

  public function buildForm(array $form, FormStateInterface $form_state) {
    //$form = array();
    $form['#cache']['max-age'] = 0;

    $tempstore                = \Drupal::service('tempstore.private')->get('org_purchases');

 // custom logic and form fields defined

    $form['submit'] = array(
          '#type' => 'submit',
          '#value' => $this->t('Submit'),
          '#attributes' => [
            'class' => ['btn btn-primary payment-submit'],
          ],
          '#prefix' => '<div class="form-item">',
          '#suffix' => '</div>',
        );
    return $form;

  } // buildForm ends here


  public function validateForm(array &$form, FormStateInterface $form_state) {
    ksm("inside validate");
  }

  public function submitForm(array &$form, FormStateInterface $form_state) {
    ksm("inside submit");
  }
}

Файл ветки:

<div id="action-nav" class="button-group form-item element">
        {# <div class="pull-left"> {{ form.submit }} </div> #} {# works as expected #}
        <div class="btn btn-primary" style="width: 150px;" id="edit-submitpurchasepayment">SUBMIT</div>
    </div>
{{ form.form_token}}
{{ form.form_build_id }}
{{ form.form_id }}

Файл Javascript:

(function ($, Drupal) {
    Drupal.behaviors.org_purchase = {
        attach: function (context, settings) {
            form = document.getElementById('purchase-cart-contact');
            form.submit();
 }
    };
})(jQuery, Drupal);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...