Jak renderować komunikat systemowy z wywołania AJAX

10

Chciałbym wyświetlić komunikat systemowy, kiedy otrzymałem moje żądanie ajax.

Żądanie ajax zwraca prawidłowy komunikat. Mogę to przetestować za pomocą ostrzeżenia.

alert(result.message);
Joomla.renderMessages(result.message);

Teraz wyświetli komunikat o powodzeniu lub błędzie jako typowy komunikat systemowy Joomla. Ale Joomla.renderMessagespołączenie nie pokazuje żadnych wyników. Komunikat systemowy nie pojawi się na mojej stronie.

Czy coś jest nie tak, czy muszę zrobić coś więcej, aby uruchomić to?

Perino
źródło

Odpowiedzi:

6

Wszystkie rzeczy wymienione przez @Bakual są poprawne, ale zauważam, że po prostu przekazujesz result.messagedo alerti biorąc pod uwagę, że [alert(message)][1]oczekuje się , że messagemoże być, stringlub objectmoże przekształcić się w stringto może być problem.

Jeśli result.messagejest to tylko ciąg, musisz go zawinąć w odpowiedni pojemnik, coś takiego:

var jmsgs = [result.message];  // You can stack multiple messages of the same type
Joomla.renderMessages({'info': jmsgs });
Craig
źródło
to jest rozwiązanie! Dzięki!
Perino
2

Funkcja JavaScript zależy od obecności kontenera o identyfikatorze system-message-container. Niektóre szablony w ogóle nie mają tego kontenera lub tylko wtedy, gdy pojawi się komunikat do wyświetlenia. Najpierw sprawdź w Protostar i sprawdź, czy tam działa

Musisz także upewnić się, że faktycznie załadowałeś core.jsswoje rozszerzenie. Nie jest konieczne ładowanie, zwłaszcza nie w interfejsie użytkownika. Od wersji Joomla 3.3 możesz ją załadować, używając JHtmlBehavior::core()wcześniejszej wersji JHtmlBehavior::framework().

Bakual
źródło