Câu trả lời:
Đối với Drupal 7 không có gì đặc biệt trong API, chỉ cần sử dụng PHP đơn giản:
if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
// AJAX request
}
Đối với Drupal 8, đối tượng yêu cầu Symfony có phương thức trợ giúp:
// 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();
Bạn có thể xem xét sử dụng current_path () trong hook của mình, để kiểm tra xem đường dẫn có chứa từ 'ajax' trong đó không.
Vd
$current_path = current_path();
if (strpos($current_path, 'ajax') !== false) {
echo 'AJAX request detected!';
exit;
}
Vì không có phương pháp kiểm tra đạn yêu cầu AJAX ( HTTP_X_REQUESTED_WITH
có thể bị giả mạo), đây là một cách khác dựa trên URL:
if (end((arg())) == 'ajax') {
// AJAX request
}
Hoạt động cho các chế độ xem (trong trường hợp khi mục URI cuối cùng chứa từ 'ajax').
Xem thêm: Làm thế nào để kiểm tra xem yêu cầu có phải là yêu cầu AJAX với PHP không?
Yêu cầu AJAX trong phạm vi làm việc với các biểu mẫu trong Drupal có nghĩa là biểu mẫu đó phải được xây dựng lại. Để phát hiện hình thức đó phải được xây dựng lại, người ta phải kiểm tra:
$form_state['rebuild'] == TRUE;
Tôi đã sử dụng nó như thế nào:
$request = $_SERVER['REQUEST_URI']
Ở đó tôi đã phát hiện ra? _Wrapper_format = drupal_ajax