Drupal 8 Ajax表单重新加载会导致多个问题

时间:2018-10-01 08:49:59

标签: ajax drupal drupal-8 drupal-fapi

我创建了一个带有文本输入和一组单选按钮以及一个ajax提交按钮的表单。当用户输入文本然后单击ajax提交时,将重新加载表单,并通过文本输入过滤单选元素。

这一切都很好,但是有一个奇怪的行为-在每次连续的ajax-click-submit之后,都会添加一个额外的ajax throbber元素(参见图片)。

预期的行为是,尽管连续进行了ajax-click-submit提交,但仅显示一个跳动。

另一个不寻常的行为是,当在commit函数中包含$form_state->rebuild()时,仅在第一次单击时调用ajax回调。以我最近构建的类似形式,情况并非如此。否则,具有过滤功能的form和ajax回调将按预期工作。

multiple instances in markup

see multiple throbbers in action

$form['container']['search_submit'] = [
  '#type' => 'submit',
  '#value' => 'Filter',
  '#submit' => ['::filterOptionsSubmitCallback'],
  '#ajax' => [
    'event' => 'click',
    'callback' => [$this, 'filterOptionsAjaxCallback'],
    'wrapper' => $this->formSelector,
    'url' => Url::fromRoute($this->formRoute),
  ],
];

  public function filterOptionsSubmitCallback(array &$form, FormStateInterface $form_state)
  {
    $search = $form_state->getValue('search');
    $filter = $form_state->getValue('filter');
    $this->store->set('searchString', $search);
    $this->store->set('exerciseFilter', $filter);
    // $form_state->setRebuild();
  }

  public function filterOptionsAjaxCallback(array &$form, FormStateInterface $form_state)
  {
    return $form['container'];
  }

0 个答案:

没有答案