W przypadku Drupala 8 obiekt żądania Symfony ma metodę pomocniczą:
// 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();
Próbuję sprawdzić, czy żądanie pochodzi z przycisku przesyłania obrazu. „HTTP_X_REQUESTED_WITH” nie istnieje w tablicy $ server server. Jakieś pomysły?
Mouneer,
zaoszczędzone godziny !! bardzo mile widziane !!
JayKandari
Dzięki, @Clive!
aserww106
9
Możesz rozważyć użycie metody current_path () w haku, aby sprawdzić, czy ścieżka zawiera słowo „ajax”.
Może pracować w 95%, ale wygląda na to, że nie jest to gwarantowane. Po pierwsze, czy nie jest to tylko konwencja, że ciąg „ajax” jest częścią ścieżki dla żądań ajax? Każdy moduł contrib może zarejestrować dowolną ścieżkę, którą wybierze. Po drugie, czy ścieżka inna niż ajax nie może zawierać ciągu „ajax”? Np. Czy można ustawić ścieżkę strony widoku lub paneli na „myajaxpage”?
AdamS
0
Ponieważ nie ma kuloodpornej metody sprawdzania żądania AJAX (co HTTP_X_REQUESTED_WITHmożna sfałszować), oto inna alternatywa oparta na adresie URL:
if(end((arg()))=='ajax'){// AJAX request}
Działa dla widoków (w przypadku, gdy ostatni element URI zawiera słowo „ajax”).
Myślę, że w przypadku pliku / ajax i media / ajax prawdopodobnie będą dodatkowe parametry w adresie URL, więc ajax nie będzie na końcu. Np. / File / ajax / field_user_picture / und / 0 / form-XXXXXXXXXXXXXXXXXXXXXXXXXX
AdamS
0
Żądanie AJAX w zakresie pracy z formularzami w Drupal oznaczałoby, że formularz musi zostać odbudowany. Aby wykryć, że formularz musi zostać odbudowany, należy sprawdzić:
Odpowiedzi:
W Drupal 7 nie ma nic specjalnego w API, wystarczy użyć zwykłego PHP:
W przypadku Drupala 8 obiekt żądania Symfony ma metodę pomocniczą:
źródło
Możesz rozważyć użycie metody current_path () w haku, aby sprawdzić, czy ścieżka zawiera słowo „ajax”.
Dawny:
źródło
Ponieważ nie ma kuloodpornej metody sprawdzania żądania AJAX (co
HTTP_X_REQUESTED_WITH
można sfałszować), oto inna alternatywa oparta na adresie URL:Działa dla widoków (w przypadku, gdy ostatni element URI zawiera słowo „ajax”).
Zobacz także: Jak sprawdzić, czy żądanie jest żądaniem AJAX w PHP?
źródło
Żądanie AJAX w zakresie pracy z formularzami w Drupal oznaczałoby, że formularz musi zostać odbudowany. Aby wykryć, że formularz musi zostać odbudowany, należy sprawdzić:
źródło
Jak to zrobiłem, użyłem:
Tam wykryłem? _Wrapper_format = drupal_ajax
źródło