Symfony - oddzielenie kodu HTML od PHP

Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 6921 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:

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

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:

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

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

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:

{{ 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:

/** * @Route("/first/{page}") */ public function firstPageAction($page) { return $this->render('pages/firstPage.html.twig', [ 'number' => 10, 'page' => $page, 'someString' => "Some string" ]); }

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.

Propozycje książek