Symfony - oddzielenie kodu HTML od PHP

Stronę tą wyświetlono już: 155 razy

Ktoś może mi zarzucić (i w pewnym sensie słusznie), że choć pisałem coś o oddzieleniu kodu PHP od kodu HTML to jakoś tego podziału nie można zobaczyć. Ot na sztywno utworzony w PHP kawałek kodu HTML:

Listing 1
  1. return new Response(
  2. "<html><body>" . $title . " " . $page . "</body></html>"
  3. );

to wszakże żadne oddzielenie, a raczej wymieszanie PHP z HTML. Naprawmy to! By było to możliwe po raz kolejny konieczne jest zanurkowanie w czeluściach wcześniej utworzonej klasy DefaultController znajdującej się w pliku src/Controller/DefaultController.php

Zanim zacznę przerabiać jedną z metod kontrolera najpierw koniecznie muszę dodać nowy plik:

Listing 2
  1. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

a następnie klasę kontrolera DefaultController muszę rozszerzyć o klasę AbstractController:

Listing 3
  1. class DefaultController extends AbstractController

tak jest, teraz klasa DefaultController dziedziczy po klasie AbstractController, dzięki czemu będzie można wykorzystać specjalną funkcję umożliwiającą ładowanie szablonu strony z plików z rozszerzeniem html.twig

Tutaj nadmienić muszę, że zanim przystąpię do tworzenia kodu, to w folderze templates folderu głównego projektu dodam podfolder o nazwie pages, a w tymże folderze utworzę sobie plik firstPage.html.twig, a w tymże pliku na razie napiszę tylko jedną linijkę tajemniczego kodu:

Listing 4
  1. {{ dump() }}

Uuuuuuu! A cóż to znowu za dziwactwo? Spokojnie, wszystko w swoim czasie, albo nieco później. Oto kawałek kodu, który zmodyfikowałem w kontrolerze na potrzeby testów:

Listing 5
  1. /**
  2. * @Route("/first/{page}")
  3. */
  4. public function firstPageAction($page)
  5. {
  6. return $this->render('pages/firstPage.html.twig', [
  7. 'number' => 10,
  8. 'page' => $page,
  9. 'someString' => "Some string"
  10. ]);
  11. }

Wygląda na to, że klasa DefaultController odziedziczyła po klasie AbstractController metodę render, która to umożliwia wyrenderowanie strony właśnie z pliku, który przed chwilą w jakże przebiegły sposób został przeze mnie utworzony. Ale cóż to? Metoda ta przyjmuje jako drugi argument tablicę parametrów, które można przekazać do pliku html.twig i które w późniejszym czasie będą mogły być przebiegle wykorzystane do dynamicznego generowania treści strony.

Dosyć tego pisania! Czas odpalić przeglądarkę, by sprawdzić efekt tej owocnej pracy. Z tego względu z najdzikszą rozkoszą wpisuję adres: localhost:8000/first/page by po chwili (lub co najwyżej dwóch) oczy me ujrzały taki widok z poniższego rysunku.

Symfony - wynik działania funkcji dump oraz ładowania strony z pliku html.twig
Rys. 1
Symfony - wynik działania funkcji dump oraz ładowania strony z pliku html.twig

Co tu się dzieje do diaska!? Jak przyjrzysz się dokładniej to po chwili (lub po dwóch) twój umysł powinien zatrybić i zrozumieć, że funkcja dump zrzuca i wyświetla sformatowany i pokolorowany kod wszystkich zmiennych udostępnionych plikowi firstPage.html.twig Czyż Symfony nie jest świetne!? A to dopiero początek początku przygody z tymże frameworkiem! W pliku html.twig można osadzać kod HTML z wstawkami kodu twig, ale to już jest temat na inną podstronę tego działu.

Komentarze