Я работаю над некоторыми пользовательскими функциями внутри представления таблицы представлений, которое позволяет использовать форму «быстрого редактирования» в качестве доступного поля через плагин поля представлений.
Форма отображается для каждой строки отдельно с использованием уникального идентификатора sub_id, передаваемого конструктору форм для каждой строки.
У меня работает форма, и она правильно выполняет отправку, но проблема в том, что мне нужно сделать две вещи при обратном вызове ajax, поэтому я использую систему AjaxResponse() для выполнения двух разных действий.
Первое действие — обновление «значения» определенного столбца в строке представлений. Второй, по сути, просто возвращает $form; вернуть форму.
Проблема в том, что когда форма выполняет проверку, проверка работает, за исключением того, что сообщения не отображаются, пока я не обновлю страницу. Я не могу понять, как указать, какую оболочку использовать для отображения сообщения формы, так как я передаю два разных ответа ajax, так как мне нужно сделать два изменения.
Код, который я использую внутри своего обратного вызова ajax, таков:
публичная функция quickEditAjax(&$form, FormStateInterface $form_state) {
$values = $form_state->getValues();
$response = новый AjaxResponse();
$status = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->load($values['status']);
$response->addCommand(new ReplaceCommand('.request-status-'. $values['id'],$status->getName()));
$response->addCommand(new ReplaceCommand('#quick-edit-wrapper-'. $this->sub_id,$form));
вернуть $ответ;
}
Где #quick-edit-wrapper-$this->sub_id
уникальный #id, установленный в форме, и .request-status-$values['id']
это класс, прикрепленный к столбцу табличного представления, который я пытаюсь изменить.
И форма, и столбец таблицы имеют правильный идентификатор и класс, и столбец успешно обновляется с помощью обратного вызова ajax addCommand().
Сообщения об ошибках проверки не отображаются ни в одной из оболочек, но я хотел бы, чтобы они отображались в # быстрое редактирование-обертка
обертка. Если ошибок проверки нет и отправка проходит, я также передаю сообщение об успешном завершении, и это сообщение также не отображается, пока я не обновлю страницу.
Есть ли способ, которым я могу конкретно указать сообщениям, в какой оболочке отображать? Ответ ajax, кажется, путается с тем, какой из них использовать.