私はDrupal検出方法AJAXリクエストを探しています。これをhook_form_alter内で確認する必要があります(AJAXサポート)
Drupal 7の場合、APIに特別なものはありません。プレーンなPHPを使用してください。
if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
// AJAX request
}
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();
パスにWordの「ajax」が含まれているかどうかを確認するには、フックでcurrent_path()を使用することを検討してください。
例:
$current_path = current_path();
if (strpos($current_path, 'ajax') !== false) {
echo 'AJAX request detected!';
exit;
}
AJAXリクエスト(HTTP_X_REQUESTED_WITH
はなりすましの可能性があるため))の完全なチェック方法がないため、URLに基づく別の代替方法を次に示します。
if (end((arg())) == 'ajax') {
// AJAX request
}
ビューで機能します(最後のURIアイテムに「ajax」Wordが含まれている場合)。
Drupal=でフォームを操作する範囲のAJAXリクエストは、フォームを再構築する必要があることを意味します。フォームを再構築する必要があることを検出するには、以下を確認する必要があります。
$form_state['rebuild'] == TRUE;
私がそれをした方法は使用していた:
$request = $_SERVER['REQUEST_URI']
そこで私は?_wrapper_format = drupal_ajaxを検出しました