AJAX ile durum mesajları


11

Standart AJAX Framework aracılığıyla drupal 7'de bir AJAX çağrısı yapıyorum. Benim sorunum bir durum mesajı AJAX geri arama tarafından ayarlandığında, sadece kaybolur (veya sayfanın bir sonraki yeniden yükleme sırasında görüntülenir). Durum mesajlarını AJAX geri aramasının çalışması bittikten hemen sonra sayfayı yeniden yüklemeden nasıl görüntüleyebilirim? Bunun için bir modül var mı?

Yanıtlar:


13

Durum mesajlarını oluşturabilir ve anohter AJAX komutu olarak gönderebilirsiniz.

Örneğin:

$commands = array();

// Add other commands

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

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

En azından bu problemle karşılaştığımda bu şekilde çözdüm.


Sen Kurtarıcısın !!! : D Çok teşekkür ederim.
SGhosh

Orada temanın ('status_messages') kullanımı nedir?
alyssaeliyah

@Bebang Bakikang durum mesajlarını oluşturur ve geçerli durum mesajlarıyla birlikte HTML kodu döndürür.
sanzante

8

Drupal 8 için

$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;

3

AJAX ile Drupal 8 formu için Tim Bozeman'ın cevabı işe yaradı, ancak mesajlar stilsiz olarak ortaya çıktı. Benim için işe yarayan buydu:

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

return $response;

0

benim için

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

çalıştı. # ana içeriğin standart olduğu ve temanızın keskin mesajlar konumu için belki de özelleştirilmesi gerekiyor. (belki de ikinci yöntemi ajax_command_append () veya başka bir yöntemle değiştirmeniz gerekir )

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.