Форма Ajax внутри пользовательской системы. Контроллер маршрута 404 работает
Например, форма узла, возвращенная контроллером:
<?php
пространство имен Drupal\mymodule\Controller;
используйте Drupal\node\Entity\Node;
класс MyController расширяет ControllerBase {
публичная функция on404() {
$node = Node::create(['type' => 'article']);
вернуть $this->entityFormBuilder()->getForm($node);
}
}
Форма узла полностью функциональна, включая сложные операции Ajax, такие как открытие медиабраузера.
Код состояния 404 или 200
Проблема в том, что я также отображаю форму, содержащую элемент Ajax (a
button), который не работает, потому что, по-видимому, запрос Ajax
пошел по следующему пути:
/system/404?q=несуществующий-путь&destination=несуществующий-путь&_exception_statuscode=404&ajax_form=1&_wrapper_format=drupal_ajax
который неожиданно возвращает код состояния: 404 Not Found
Это неправда, просьба /система/404
возвращает код состояния 200 при вызове вне обработчика исключений, например, в запросе ajax. система.404
route — это обычный маршрут, который выполняется обработчиком исключений в подзапросе. Статус 404 добавляется позже и не является частью этого маршрута.