it-swarm.com.de

Statusmeldungen mit AJAX

Ich mache einen AJAX Aufruf in drupal 7 über das Standard-Framework AJAX. Mein Problem ist, dass eine Statusmeldung, die durch den Rückruf AJAX gesetzt wird, einfach verloren geht (oder beim nächsten Neuladen der Seite angezeigt wird). Wie kann ich die Statusmeldungen direkt nach Beendigung des Rückrufs AJAX anzeigen, ohne die Seite neu zu laden? Gibt es dafür ein Modul?

11
mimrock

Sie können die Statusmeldungen rendern und als weiteren AJAX Befehl) senden.

Zum Beispiel:

$commands = array();

// Add other commands

$commands[] = ajax_command_prepend('div#ajax-status-messages-wrapper', theme('status_messages'));

return array('#type' => 'ajax', '#commands' => $commands);

Zumindest habe ich dieses Problem auf diese Weise gelöst, als ich damit konfrontiert wurde.

13
sanzante

Für Drupal 8 ist es

$response = new AjaxResponse();    
$status_messages = array('#type' => 'status_messages');
$messages = \Drupal::service('renderer')->renderRoot($status_messages);
if (!empty($messages)) {
  $response->addCommand(new PrependCommand('.your_selector', $messages));
}

return $response;
8
Tim Bozeman

Für Drupal 8 Formular mit AJAX, Antwort von Tim Bozeman funktionierte, aber Nachrichten wurden ohne Styling angezeigt. Dies war, was für mich funktioniert hat:

$response = new AjaxResponse();
drupal_set_message($action);
$form['messages']['status'] = [
  '#type' => 'status_messages',
];
$response->addCommand(new InsertCommand(null, $form['messages']));

return $response;
3
user3290238

für mich

$commands[] = ajax_command_remove('div.messages');
$commands[] = ajax_command_after('#main-content', theme('status_messages'));

hat funktioniert. Dabei ist # main-content Standard und muss möglicherweise an die Position Ihres Themas für akute Nachrichten angepasst werden. (Vielleicht müssen Sie die zweite Methode in ajax_command_append () oder eine andere ändern.)

0
rémy