Untuk Drupal 8, objek permintaan Symfony memiliki metode pembantu:
// 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();
Mungkin bekerja 95% tetapi sepertinya ini tidak dijamin. Pertama bukan hanya konvensi bahwa string 'ajax' adalah bagian dari path untuk permintaan ajax? Modul contrib dapat mendaftarkan jalur apa pun yang dipilihnya. Kedua, bisakah jalur non-ajax berisi string 'ajax'? Misalnya, dapat menetapkan jalur untuk halaman tampilan atau panel ke 'myajaxpage'?
AdamS
0
Karena tidak ada metode anti peluru untuk memeriksa permintaan AJAX (seperti HTTP_X_REQUESTED_WITHdapat dipalsukan), berikut adalah alternatif lain berdasarkan URL:
if(end((arg()))=='ajax'){// AJAX request}
Bekerja untuk tampilan (jika item URI terakhir berisi kata 'ajax').
Saya pikir dalam kasus file / ajax dan media / ajax kemungkinan ada parameter tambahan pada URL, jadi ajax tidak akan berada di akhir. Misalnya / file / ajax / field_user_picture / und / 0 / form-XXXXXXXXXXXXXXXXXXXXXXXXXXX
AdamS
0
Permintaan AJAX dalam lingkup bekerja dengan formulir di Drupal berarti formulir itu harus dibangun kembali. Untuk mendeteksi formulir yang harus dibangun kembali, seseorang harus memeriksa:
Jawaban:
Untuk Drupal 7 tidak ada yang istimewa di API, cukup gunakan PHP biasa:
Untuk Drupal 8, objek permintaan Symfony memiliki metode pembantu:
sumber
Anda dapat mempertimbangkan menggunakan current_path () di hook Anda, untuk memeriksa apakah path berisi kata 'ajax' di dalamnya.
Ex:
sumber
Karena tidak ada metode anti peluru untuk memeriksa permintaan AJAX (seperti
HTTP_X_REQUESTED_WITH
dapat dipalsukan), berikut adalah alternatif lain berdasarkan URL:Bekerja untuk tampilan (jika item URI terakhir berisi kata 'ajax').
Lihat juga: Bagaimana memeriksa apakah permintaan tersebut adalah permintaan AJAX dengan PHP?
sumber
Permintaan AJAX dalam lingkup bekerja dengan formulir di Drupal berarti formulir itu harus dibangun kembali. Untuk mendeteksi formulir yang harus dibangun kembali, seseorang harus memeriksa:
sumber
Bagaimana saya melakukannya menggunakan:
Di sana saya mendeteksi? _Wrapper_format = drupal_ajax
sumber