Для Drupal 8 объект запроса Symfony имеет вспомогательный метод:
// Example for brevity only, inject the request_stack service and call // getCurrentRequest() on it to get the request object if possible.
$request = \Drupal::request();
$is_ajax = $request->isXmlHttpRequest();
Может работать на 95%, но, похоже, это не гарантировано. Во-первых, разве не принято, что строка «ajax» является частью пути для запросов ajax? Любой модуль contrib может зарегистрировать любой выбранный путь. Во-вторых, не может ли путь без AJAX содержать строку «AJAX»? Например, можно ли задать путь для страницы просмотра или панелей к myajaxpage?
Адамс
0
Поскольку не существует пуленепробиваемого метода проверки AJAX-запроса (как это HTTP_X_REQUESTED_WITHможет быть подделано), вот еще одна альтернатива, основанная на URL:
if(end((arg()))=='ajax'){// AJAX request}
Работает для представлений (в случае, когда последний элемент URI содержит слово «ajax»).
Я думаю, что в случае файлов / ajax и media / ajax в URL могут быть дополнительные параметры, поэтому ajax не будет в конце. Например, / file / ajax / field_user_picture / und / 0 / form-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
AdamS
0
Запрос AJAX по работе с формами в Drupal будет означать, что форму необходимо перестроить. Чтобы обнаружить эту форму, необходимо восстановить:
Ответы:
Для Drupal 7 в API нет ничего особенного, просто используйте простой PHP:
Для Drupal 8 объект запроса Symfony имеет вспомогательный метод:
источник
Вы можете рассмотреть использование current_path () в вашем хуке, для проверки, содержит ли путь слово ajax.
Пример:
источник
Поскольку не существует пуленепробиваемого метода проверки AJAX-запроса (как это
HTTP_X_REQUESTED_WITH
может быть подделано), вот еще одна альтернатива, основанная на URL:Работает для представлений (в случае, когда последний элемент URI содержит слово «ajax»).
См. Также: Как проверить, является ли запрос AJAX-запросом с PHP?
источник
Запрос AJAX по работе с формами в Drupal будет означать, что форму необходимо перестроить. Чтобы обнаружить эту форму, необходимо восстановить:
источник
Как я это сделал, использовал:
Там я обнаружил? _Wrapper_format = drupal_ajax
источник