Используя объект \Drupal\Core\Ajax\InvokeCommand
в \Drupal\Core\Ajax\AjaxResponse::addCommand()
.
Ajax можно использовать с формами для предоставления различных вещей.Типичные шаги:
- Создание формы.
- В
::buildForm()
используйте элемент визуализации #ajax
. - Создание обратного вызова.
Есть два способа ответить на запрос ajax.Вы можете либо ответить с помощью объекта AjaxResponse
или HTML, чтобы заменить элемент, которым может быть либо необработанный HTML, либо массив рендеринга.
Чтобы вызвать свою собственную функцию Javascript - по вашему желанию - выдолжен ответить AjaxResponse
объектом.
Вот полная документация Ajax на Drupal 8 .
Вот пример:
Частично ::buildForm()
с реализацией элемента рендеринга Ajax:
$form['submit'] = [
'#type' => 'submit',
'#value' => $this->t('Send'),
'#ajax' => [
'callback' => [$this, 'respondToAjax'],
]
];
Вот метод обратного вызова Ajax, в той же форме:
/**
* @param array $form
* Form API array structure.
* @param array $form_state
* Form state information.
*
* @return \Drupal\Core\Ajax\AjaxResponse
* Response object.
*/
public function respondToAjax(array &$form, FormStateInterface $form_state) {
$response = new AjaxResponse();
$response->addCommand(new InvokeCommand('#example', 'ajaxSuccess'));
return $response;
}
Вы можете найти здесь список всех команд, которые вы можете передать в ответе .