Obiekt klasy \core\Messages tworzony jest automatycznie przy inicjalizacji systemu i pozwala na wygenerowanie/wstawienie dowolnej liczby komunikatów (obiektów klasy \core\Message).
Zawiera szereg metod pozwalających zweryfikować czy i jakiego rodzaju komunikaty są już zebrane. Można je również usunąć.
Obiekt klasy Messages można pobrać za pomocą App:getMessages()
Metody klasy \core\Messages
addMessage(\core\Message $m, $index = null)
wstawia komunikat do wewnętrznej tablicy komunikatów na kolejną pozycję (gdy $index nie podany lub = null) lub na pozycję wskazaną parametrem $index, gdy jest on != null.
Wstawianie komunikatów na określone indeksy (np. "name") może być przydatne przy przypisywaniu komunikatów do pól formularza (powiązane z tym metody: getMessage i isMessage).
clear()
usuwa wszystkie komunikaty
getMessage($index), isMessage($index)
pierwsza metoda zwraca komunikat z określonej pozycji. Używana w parze z drugą metodą, która pozwala uprzednio sprawdzić, czy komunikat na wskazanej pozycji się znajduje (przydatne np. przy przypisywaniu komunikatów do pól formularza)
getMessages()
zwraca tablicę z komunikatami - obiektami typu \core\Message (np. do celów wyświetlania po stronie widoku).
Metody informacyjne
getNumberOfErrors(), getNumberOfInfos(), getNumberOfWarings()
zwraca liczbę komunikatów z błędami, informacjami i ostrzeżeniami
getSize()
zwraca liczbę komunikatów
isEmpty(), isError(), isInfo(), isWarning()
metody zwracają true/false w zależności od tego czy są lub nie ma odpowiednio: komunikaty ogólnie, błędy, informacje, ostrzeżenia.
Klasa \core\Message
Klasa Message jest prostą klasa pozwalającą tworzyć komunikaty jednego typu, np.
$m = new \core\Message("Treść komunikatu", \core\Message::ERROR);
często używany bezpośrednio przy dodawaniu komunikatu:
App:getMessages()->addMessage(new \core\Message("jakiś tekst informacyjny", \core\Message::INFO));
Metody klasy \core\Message
__construct($text, $type)
konstruktor pozwala podać treść oraz typ komunikatu (patrz przykłady powyżej). Dostępne typy: \core\Message::INFO, \core\Message::WARNING, \core\Message::ERROR
getTypeName()
zwraca tekst (nazwę) opisującą typ wiadomości. Zwracane wartości to "error", "warning" lub "info"
isError(), isInfo(), isWarning()
pozwala sprawdzić czy komunikat jest odpowiednio: błędem, informacją, czy ostrzeżeniem
Metody świetnie nadają się do odpowiedniego wystylizowania komunikatu podczas jego wyświetlania w języku HTML. Poniższy przykład pokazuje wstawienie odpowiednich klas css biblioteki bootstrap, pozwalając na odpowiednią stylizację komunikatu w zależności od jego typu. Przykład zakłada użycie biblioteki Smarty wbudowanej w Amelię (obiekt komunikatów $msgs jest dostępny w widoku bez konieczności jego przekazywania):
{foreach $msgs->getMessages() as $msg}
<div class="alert {if $msg->isInfo()}alert-success{/if}
{if $msg->isWarning()}alert-warning{/if}
{if $msg->isError()}alert-danger{/if}" role="alert">
{$msg->text}
</div>
{/foreach}