Я написал собственный модуль в 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);