Autor podstrony: Krzysztof Zajączkowski

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

Layout wykonany przez autora strony, wszelkie prawa zastrzeżone. Jakiekolwiek użycie części lub całości grafik znajdujących się na tej stronie bez pisemnej zgody jej autora surowo zabronione.