在除按钮之外的每个表单元素中使用Ajax都没有问题。当我点击这个按钮
'#type' => 'submit',
'#ajax' => [
'callback' => '::ajax_function',
'wrapper' => 'my-button-wrapper',
],它会重新加载页面..。它可以执行正常提交按钮所做的操作--调用submitForm()。我不需要这个。我只需要这个按钮来调用ajax_function()
发布于 2019-08-21 01:52:10
在Drupal中,除非将自定义处理程序附加到单击的submit按钮,否则将始终调用表单定义的submitHandler()方法。对于#ajax按钮,您可以添加自己的自定义处理程序,然后在该处理程序中重新构建表单。
'#type' => 'submit',
'#ajax' => [
'callback' => '::ajax_function',
'wrapper' => 'my-button-wrapper',
],
'#submit' => ['::ajaxButtonSubmit'],然后:
public function ajaxButtonSubmit(array &$form, FormStateInterface $form_state) {
$form_state->setRebuild(TRUE);
}这样做,就不会调用默认的提交处理程序,而是调用ajax提交处理程序,从而确保重新构建表单,而不是重新加载表单。
https://drupal.stackexchange.com/questions/284593
复制相似问题