Większość aplikacji czy też systemów zarządzania treścią posiada
dymanicznie tworzoną treść. Jednak niekiedy część tej treści jest mniej
dynamiczna. Zmienia się rzadko lub też wogóle. Przykładem mogą być
takie strony jak „Regulamin” czy też „Polityka Prywatności”.
Gdy do tworzenia aplikacji używamy dowolnego frameworka zgodnego z
wzorcem MVC, treść takich stron powinna być przechowywana w bazie a
pobierana przez kontroler.
Innym rozwiązaniem jest napisanie oddzielnej metody dla każdej strony i
treść umieszczać w odpowiednim widoku. Pracując z Play
Framework można to zrobić o wiele prościej.
Przypuśćmy, że mamy aplikację która ma stronę „Regulamin” jako
semistatyczna.
Treść regulaminu umieszczamy w pliku app/views/Pages/regulamin.html
.
W routes wpisujemy:
1 2 |
GET /pages/{pageName} Pages.show |
Tworzymy kontroler Pages
ze zdefiniowaną metodą show
:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public class Pages extends Controller public static void show(String pageName){ String filePath = String.format("app/views/Pages/%s.html", pageName); notFoundIfNull(Play.getVirtualFile(filePath)); renderTemplate(filePath); } } |
Jak to działa? Nie wiem czy trzeba tłumaczyć, ale w kilku zdaniach:
Gdy w przeglądarce wpiszemy adres /pages/costam
zostaniemy
przekierowani do metody show
kontrolera Pages
gdzie costam
zostanie użyte jako parametr metody.
Kontroler wtedy szuka pliku costam.html
w folderze app/views/Pages
i
gdy znajduje – wyświetla go, w przeciwnym razie wyrzuca błąd 404 Not
Found.
.