Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00366 006458 13601203 na godz. na dobę w sumie
PHP5. Programowanie z wykorzystaniem Symfony, CakePHP, Zend Framework - książka
PHP5. Programowanie z wykorzystaniem Symfony, CakePHP, Zend Framework - książka
Autor: , Liczba stron: 360
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-246-2521-5 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> webmasterstwo >> php - programowanie
Porównaj ceny (książka, ebook, audiobook).

Na rynku dostępnych jest obecnie mnóstwo rozwiązań umożliwiających szybkie tworzenie serwisów internetowych z wykorzystaniem najpopularniejszego języka skryptowego, czyli PHP, oraz zestawów narzędzi składających się z bazy danych i serwera HTTP, takich jak MySQL i Apache. Wybór najlepszego oprogramowania dla konkretnej witryny może być czasami bardzo trudny, ponieważ każda z platform ma swoje wady i zalety. Sprawę może jednak ułatwić lektura odpowiedniej książki.

Książką tą jest 'PHP5. Programowanie z wykorzystaniem Symfony, CakePHP, Zend Framework'. Dokładnie opisano w niej sposób działania poszczególnych platform, zwracając szczególną uwagę na mocne i słabe strony każdego z rozwiązań. Na podstawie praktycznych przykładów zastosowań będziesz mógł samodzielnie przekonać się, które oprogramowanie najlepiej sprawdzi się w Twoim projekcie. Nauczysz się też wiele o budowie frameworków, poznasz znaczenie warstw i zasady administrowania serwisami, a ponadto zdobędziesz wiadomości na temat wirtualnych hostów i odpowiedniego środowiska pracy projektanta WWW.

Poznaj najbardziej popularne rozwiązania dla twórców WWW.


Książka została przygotowana w oparciu o następujące wersje frameworków:

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

PHP5. Programowanie z wykorzystaniem Symfony, CakePHP, Zend Framework Autorzy: Tomasz Skaraczyñski, Andrzej Zo³a ISBN: 978-83-246-2521-5 Format: 158×235, stron: 360 Na rynku dostêpnych jest obecnie mnóstwo rozwi¹zañ umo¿liwiaj¹cych szybkie tworzenie serwisów internetowych z wykorzystaniem najpopularniejszego jêzyka skryptowego, czyli PHP, oraz zestawów narzêdzi sk³adaj¹cych siê z bazy danych i serwera HTTP, takich jak MySQL i Apache. Wybór najlepszego oprogramowania dla konkretnej witryny mo¿e byæ czasami bardzo trudny, poniewa¿ ka¿da z platform ma swoje wady i zalety. Sprawê mo¿e jednak u³atwiæ lektura odpowiedniej ksi¹¿ki. Ksi¹¿k¹ t¹ jest „PHP5. Programowanie z wykorzystaniem Symfony, CakePHP, Zend Framework”. Dok³adnie opisano w niej sposób dzia³ania poszczególnych platform, zwracaj¹c szczególn¹ uwagê na mocne i s³abe strony ka¿dego z rozwi¹zañ. Na podstawie praktycznych przyk³adów zastosowañ bêdziesz móg³ samodzielnie przekonaæ siê, które oprogramowanie najlepiej sprawdzi siê w Twoim projekcie. Nauczysz siê te¿ wiele o budowie frameworków, poznasz znaczenie warstw i zasady administrowania serwisami, a ponadto zdobêdziesz wiadomoœci na temat wirtualnych hostów i odpowiedniego œrodowiska pracy projektanta WWW. (cid:129) Instalowanie i konfigurowanie platform (cid:129) Konstrukcja aplikacji WWW (cid:129) Znaczenie warstw kontrolera, modelu i widoku (cid:129) Tworzenie przyk³adowych aplikacji (cid:129) œrodowisko pracy projektanta WWW (cid:129) Praca z wirtualnymi hostami (cid:129) Zarz¹dzanie projektami Poznaj najbardziej popularne rozwi¹zania dla twórców WWW Spis treĈci Rozdziaä 1. Szybki start ..................................................................................... 9 Struktura serwisu .............................................................................................................. 9 Ruszamy z projektem ..................................................................................................... 10 Potrzebna aplikacja ......................................................................................................... 11 Tworzymy moduá ........................................................................................................... 12 Pierwsza akcja ................................................................................................................ 13 Szablony akcji ................................................................................................................ 15 Instalacja layoutu ............................................................................................................ 16 Sprzątanie wewnątrz layoutu ................................................................................. 17 Konfiguracja widoku aplikacji ............................................................................... 17 Edycja pliku layoutu .............................................................................................. 18 Prezentowanie wyniku akcji ........................................................................................... 20 Brakujące elementy serwisu ........................................................................................... 21 Powiązanie akcji z menu ................................................................................................ 22 Stopka — i to by byáo na tyle ......................................................................................... 22 Podsumowanie ................................................................................................................ 23 Rozdziaä 2. Warstwa kontrolera ........................................................................ 25 Budowa aplikacji Symfony ............................................................................................. 25 Kontroler frontowy ......................................................................................................... 26 Jak startuje aplikacja Symfony? ............................................................................. 27 Czy moĪna uĪywaü wiĊcej niĪ jednego kontrolera frontowego? ........................... 28 Jak uĪyü innego kontrolera? ................................................................................... 28 Co to jest Ğrodowisko pracy kontrolera? ................................................................ 28 Gdzie są konfigurowane Ğrodowiska pracy? .......................................................... 29 Czy moĪna utworzyü wáasne Ğrodowisko pracy? ................................................... 29 Akcje .............................................................................................................................. 29 Pliki z akcją ........................................................................................................... 31 W jaki sposób przekazaü parametr do akcji? ......................................................... 32 Zaglądamy do Ğrodka akcji .................................................................................... 33 Przesyáanie parametrów w Īądaniu HTTP ...................................................................... 34 Czy formularze moĪna tworzyü inaczej? ............................................................... 36 Szablon widoku .............................................................................................................. 37 Co musisz wiedzieü na początek? .......................................................................... 37 Jak sterowaü widokami? ........................................................................................ 37 Czy mogĊ uĪywaü wáasnych widoków? ................................................................. 38 4 PHP5. Programowanie z wykorzystaniem Symfony, CakePHP, Zend Framework Co z akcjami, które nie mogą byü prezentowane w przeglądarce? ........................ 38 Warunkowe zwracanie widoków ........................................................................... 39 Przekierowania ............................................................................................................... 40 ĩądanie nietrafione ................................................................................................ 42 Inne rodzaje przekierowaĔ ..................................................................................... 44 Przed akcją i po akcji ...................................................................................................... 44 Obiekt obsáugujący Īądania ............................................................................................ 46 Informacje o Īądaniu ............................................................................................. 48 Informacje o zasobie .............................................................................................. 48 ParameterHolder i funkcje proxy .................................................................................... 49 Funkcje proxy ........................................................................................................ 50 Ciasteczka ....................................................................................................................... 51 Przesyáanie plików na serwer ......................................................................................... 52 Obsáuga sesji ................................................................................................................... 53 Proste logowanie .................................................................................................... 54 Usuwanie zmiennej z sesji ..................................................................................... 56 Zmienne sesji w widokach ..................................................................................... 57 Atrybuty jednorazowe ............................................................................................ 57 Kilka sáów o konfiguracji sesji ............................................................................... 59 System uprawnieĔ .......................................................................................................... 60 Przegląd funkcji systemu uprawnieĔ ..................................................................... 64 Zaawansowane listy uwierzytelnieĔ ...................................................................... 64 Walidacja ........................................................................................................................ 66 Mechanizm walidacji ............................................................................................. 67 Podsumowanie ................................................................................................................ 68 Rozdziaä 3. Warstwa modelu ............................................................................ 69 Od bazy do modelu ......................................................................................................... 69 Baza danych ........................................................................................................... 70 Generowanie schematu YML na podstawie bazy danych .............................................. 73 Konfiguracja propela ............................................................................................. 73 Generowanie bazy danych na podstawie schematu YML .............................................. 77 Anatomia pliku schema.yml .................................................................................. 79 DostĊpne typy danych ............................................................................................ 81 Definiowanie pól ................................................................................................... 83 Indeksy ................................................................................................................... 84 WáaĞciwoĞci poáączenia ......................................................................................... 84 Dwa schematy. Czy to moĪliwe? ........................................................................... 85 Co w modelu piszczy ...................................................................................................... 87 Katalogi modelu ..................................................................................................... 88 Model w akcji ........................................................................................................ 88 Konstruowanie kryteriów ............................................................................................. 100 Warunkowe pobieranie danych ............................................................................ 100 Typy porównywania dozwolone dla metody add ................................................. 102 Inne metody obiektu Criteria ............................................................................... 103 Zliczanie rekordów .............................................................................................. 107 Surowe zapytania SQL ................................................................................................. 107 Korzystanie z Creole ............................................................................................ 108 Rozszerzanie modelu .................................................................................................... 109 Poáączenia z bazą danych ............................................................................................. 112 WiĊcej o pliku database.yml ................................................................................ 112 Podsumowanie .............................................................................................................. 114 Spis treĈci 5 Rozdziaä 4. Warstwa widoku .......................................................................... 115 DomyĞlna akcja i jej widok .......................................................................................... 115 Reguáy dla szablonów widoku ............................................................................. 116 Logika a szablon .................................................................................................. 117 Pomocniki ..................................................................................................................... 117 Pomocniki ogólnie dostĊpne ................................................................................ 119 Layouty ......................................................................................................................... 120 Inny layout ........................................................................................................... 121 Pomocniki w layoutach ........................................................................................ 123 Zmiana layoutu dla moduáu ................................................................................. 123 Zmiana layoutu dla szablonu widoku .................................................................. 124 Zmiana layoutu dla akcji ...................................................................................... 125 Usuwanie layoutu ................................................................................................ 126 Elementy widoku .......................................................................................................... 127 Proste doáączanie pliku ........................................................................................ 127 Partiale ................................................................................................................. 128 Komponenty ................................................................................................................. 133 Sloty ............................................................................................................................. 136 Konfiguracja ................................................................................................................. 139 Pliki view.yml ...................................................................................................... 139 Kaskada plików konfiguracyjnych ....................................................................... 140 Obiekt Response .................................................................................................. 141 Sterowanie sekcją meta poprzez obiekt odpowiedzi ............................................ 142 Pliki zewnĊtrzne ........................................................................................................... 143 Pliki CSS i JS ....................................................................................................... 144 Manipulowanie kolejnoĞcią doáączanych plików ................................................. 144 OkreĞlanie medium .............................................................................................. 145 Komponenty slotowe .................................................................................................... 146 Podsumowanie .............................................................................................................. 149 Rozdziaä 5. Przykäadowa aplikacja .................................................................. 151 ĝwiat wizytówek .......................................................................................................... 151 Projekt bazy danych ..................................................................................................... 152 Instalacja layoutu i konfiguracja widoku ...................................................................... 154 Wykonanie modelu ....................................................................................................... 158 Budowa menu ............................................................................................................... 158 Strona o firmie .............................................................................................................. 160 Panel administracyjny — o firmie ....................................................................... 161 Interfejs uĪytkownika — o firmie ........................................................................ 164 Strona referencji ........................................................................................................... 164 Panel administracyjny — referencje .................................................................... 165 Interfejs uĪytkownika — referencje ..................................................................... 175 Strony z ofertą .............................................................................................................. 176 Panel administracyjny — kategorie ..................................................................... 177 Panel administracyjny — produkty ...................................................................... 179 Panel administracyjny — kategorie — ciąg dalszy .............................................. 185 Panel administracyjny — zdjĊcia ......................................................................... 188 Interfejs uĪytkownika — oferta ........................................................................... 191 Sentencje — panel administracyjny i interfejs uĪytkownika ........................................ 197 Licznik odwiedzin ........................................................................................................ 202 Podsumowanie .............................................................................................................. 203 6 PHP5. Programowanie z wykorzystaniem Symfony, CakePHP, Zend Framework Rozdziaä 6. Aplikacja Zend ............................................................................. 205 Szybka instalacja .......................................................................................................... 205 Test instalacji ................................................................................................................ 206 Po instalacji .................................................................................................................. 206 Pierwsza akcja na rozgrzewkĊ ...................................................................................... 207 Konfiguracja projektu ................................................................................................... 208 Layout ........................................................................................................................... 209 Interfejs klienta ............................................................................................................. 210 Strona o firmie ..................................................................................................... 210 Menu .................................................................................................................... 214 Referencje ............................................................................................................ 216 Oferta ............................................................................................................................ 217 Submenu .............................................................................................................. 220 Kategoria ............................................................................................................. 221 Szczegóáy produktu .............................................................................................. 223 Dodatki ................................................................................................................ 224 Panel administracyjny ................................................................................................... 229 Inny layout dla panelu .......................................................................................... 229 Zarządzanie stroną o firmie ................................................................................. 230 Administracja referencjami .................................................................................. 234 Kategorie ............................................................................................................. 243 Zarządzanie produktami ....................................................................................... 252 Sentencje .............................................................................................................. 264 Podsumowanie .............................................................................................................. 269 Rozdziaä 7. Aplikacja CakePHP ...................................................................... 271 Instalacja frameworka ................................................................................................... 271 Konfiguracja bazy danych ............................................................................................ 272 O firmie ........................................................................................................................ 273 Model ................................................................................................................... 273 Kontroler .............................................................................................................. 274 Widok .................................................................................................................. 275 Layout ........................................................................................................................... 275 Logowanie na ekranie ................................................................................................... 276 Menu ............................................................................................................................. 276 Komponent .......................................................................................................... 277 Helper .................................................................................................................. 277 Referencje ..................................................................................................................... 280 Model referencji ................................................................................................... 280 Oferta ............................................................................................................................ 282 Model na rozgrzewkĊ ........................................................................................... 282 Oferta w poszczególnych kategoriach ................................................................. 285 Szczegóáy wizytówki ........................................................................................... 287 Sentencje ...................................................................................................................... 288 Komponent .......................................................................................................... 288 Uruchomienie komponentu Sentencje ................................................................. 289 Licznik .......................................................................................................................... 290 Komponent licznika ............................................................................................. 290 Uruchamianie licznika ......................................................................................... 291 Panel administracyjny ................................................................................................... 292 Zmiana layoutu .................................................................................................... 292 Strona administracyjna o firmie ........................................................................... 293 Referencje ............................................................................................................ 296 Kategorie ............................................................................................................. 304 Spis treĈci 7 Produkty ............................................................................................................... 310 Dodawanie nowego produktu .............................................................................. 312 Sentencje .............................................................................................................. 324 Podsumowanie .............................................................................................................. 327 Podsumowanie ............................................................................. 329 Dodatek A ćrodowisko pracy web developera ................................................ 331 Serwer HTTP ................................................................................................................ 331 Interpreter PHP ............................................................................................................. 332 Serwer baz danych ........................................................................................................ 332 Wszystko w jednym, czyli scyzoryk ............................................................................. 332 ĝrodowisko projektowania baz danych ........................................................................ 333 Edytory kodu ................................................................................................................ 333 Przeglądarki .................................................................................................................. 334 NarzĊdzia do pracy w grupie ........................................................................................ 334 Dodatek B Wirtualne hosty ............................................................................ 337 Importowanie wirtualnych hostów do pliku konfiguracyjnego Apache ....................... 337 Definiowanie wirtualnych hostów ................................................................................ 337 Wirtualny host dla lokalnego hosta .............................................................................. 338 Konfiguracja systemu Windows ................................................................................... 338 Dodatek C Szybka instalacja ......................................................................... 341 Odtworzenie bazy danych ............................................................................................. 341 Zainstalowanie projektu Symfony, Zend i CakePHP .................................................... 341 Dodatek D Zarzñdzanie projektem ................................................................. 343 Bibliografia .................................................................................. 345 Skorowidz .................................................................................... 347 Rozdziaä 4. Warstwa widoku W poprzednich rozdziaáach mogáeĞ przeczytaü, Īe Symfony opiera siĊ na reguáach MVC (Model-View-Controller). Warstwy modelu oraz kontrolera zostaáy tam szczegóáowo omówione. W tym rozdziale dowiesz siĊ wszystkiego, co jest niezbĊdne do poprawnego konstruowania widoków. Zanim przejdziesz dalej, warto w tym miejscu przypomnieü, czym jest widok i jaki ma związek z poprzednio poznanymi warstwami. OtóĪ widok to reprezentacja wizualna wykonanych w akcji operacji. JeĪeli spojrzysz na widok w kontekĞcie poprzednio pozna- nych warstw, to áatwo zauwaĪysz, Īe:  kontroler steruje wszystkimi operacjami (poprzez akcje),  model implementuje logikĊ biznesową aplikacji (przetwarza dane),  widok opakowuje otrzymane dane w kod HTML tak, aby powstaáa wizualizacja wykonanych operacji. Dalsze üwiczenia wykonywane bĊdą w aplikacji widok. Musisz wiĊc ją utworzyü. Potrak- tuj to jako üwiczenie przypominające poznane poprzednio zagadnienia. Utwórz takĪe moduá szablony, którego bĊdziesz uĪywaá w pierwszych üwiczeniach. DomyĈlna akcja i jej widok Akcja index jest domyĞlną akcją kaĪdego moduáu. ZauwaĪ, Īe Symfony dodaje ją auto- matycznie do tworzonego moduáu. Zawiera ona przekierowanie do akcji wyĞwietlającej informacyjny komunikat o utworzeniu moduáu. Zmiana widoku na wáasny wymaga usu- niĊcia linijki kodu: $this- forward( default , module ); JeĪeli dodaáeĞ juĪ komentarz, moĪesz przystąpiü do utworzenia domyĞlnego widoku dla moduáu. Utwórz wiĊc plik indexSuccess.php i dodaj do niego przykáadowy kod. MoĪe on wyglądaü jak na listingu: 116 PHP5. Programowanie z wykorzystaniem Symfony, CakePHP, Zend Framework h1 Witaj Swiecie /h1 p Lorem ipsum dolor sit amet consectetuer fames... /p p Lorem ipsum dolor sit amet consectetuer fames... Lorem ipsum dolor sit amet consectetuer fames... Lorem ipsum dolor sit amet consectetuer fames... /p p Lorem ipsum dolor sit amet consectetuer fames... Lorem ipsum dolor sit amet consectetuer fames... /p p Lorem ipsum dolor sit amet consectetuer fames... /p Udaáo Ci siĊ utworzyü widok, który prezentowany bĊdzie zawsze, kiedy uĪytkownik nie okreĞli akcji, jaką naleĪy wykonaü. W prawdziwej aplikacji warto zadbaü, Īeby ten widok byá czymĞ w rodzaju strony startowej dla moduáu. Reguäy dla szablonów widoku Tworząc szablony zgodnie z ideą zawartą w technologii MVC, naleĪy pamiĊtaü o prze- strzeganiu kilu reguá. NajwaĪniejsze z nich to:  dopuszczalne jest uĪywanie w szablonach instrukcji sterujących: if, switch itp.  dopuszczalne jest uĪywanie w szablonach instrukcji pĊtli: for, while, foreach itp.  niedopuszczalne jest uĪywanie w szablonach kodu przetwarzającego dane,  szablony sáuĪą jedynie do wizualizacji wczeĞniej wykonanych w akcjach operacji. Kilka sáów wyjaĞniających pozwoli Ci lepiej zrozumieü przedstawione powyĪej aspekty. Szablony widoków z natury powinny byü jedynie reprezentacją wizualną przetworzo- nych danych. Z tego powodu dopuszcza siĊ w nich jedynie uĪywanie prostych konstruk- cji jĊzykowych. Dla przykáadu, moĪesz sprawdziü, czy jakiĞ warunek jest prawdziwy, i w zaleĪnoĞci od wyniku przedstawiü pewną czĊĞü widoku. Ponadto dla danych repre- zentowanych przez tablice moĪesz bez obawy uĪywaü pĊtli. Konstrukcje te sáuĪą jedynie do sterowania przepáywem danych, a nie do generowania danych. PamiĊtaj natomiast, Īe uĪywanie instrukcji PHP do oprogramowania jakiejkolwiek logiki jest w szablonach niepoĪądane. JeĪeli musisz coĞ wyliczyü, przetworzyü, zrób to w akcji! Dlaczego nie moĪesz uĪywaü w widoku funkcji wbudowanych w PHP? Najprostszą odpowiedzią byáoby napisanie: bo tak kaĪe MVC. PoniewaĪ jednak taka odpowiedĨ nie satysfakcjonowaáaby mnie ani trochĊ, spróbujĊ w paru zdaniach wyjaĞniü Ci, skąd wziąá siĊ w ogóle taki pomysá. WyobraĨ sobie, Īe pracujesz w zespole nad aplikacją komer- cyjną. Aplikacja jest dosyü záoĪona, a Ty jesteĞ jednym z programistów. W zespole jest równieĪ grafik odpowiedzialny za projektowanie layoutów i przygotowanie kodu HTML dla akcji. JeĪeli dobrze okreĞlicie granice swoich wpáywów, moĪecie uáatwiü sobie pracĊ. Brak instrukcji PHP w kodach widoku spowoduje, Īe dla grafika czytanie kodu bĊdzie zdecydowanie áatwiejsze. Zapoznasz go z kilkoma zagadnieniami, takimi jak: pĊtle, instrukcje if oraz skáadowe widoku Symfony, i bĊdzie on mógá pracowaü nad wido- kami sam. Z drugiej strony jest to równieĪ olbrzymia zaleta dla Ciebie. MoĪesz sku- piü siĊ na programowaniu akcji, na rozwiązywaniu zawiáoĞci aplikacji, nie martwiąc siĊ przy tym stylizacją wizualną tego, co robisz. Mam nadziejĊ, Īe takie wyjaĞnienie w zupeánoĞci Ci wystarczy. Rozdziaä 4. i Warstwa widoku Logika a szablon 117 W kaĪdym systemie implementującym MVC logika oddzielona jest od szablonu widoku. Separacja tych elementów aplikacji pozwala na wiĊkszy komfort pracy dla zespoáu skáadającego siĊ z kilku pracowników. Ponadto zwiĊksza moĪliwoĞci systemu oraz efek- tywnoĞü pracy, poniewaĪ pozwala na wielokrotne wykorzystywanie tego samego kodu. Lepiej to zrozumiesz na konkretnym przykáadzie. WyobraĨ sobie, Īe programujesz pewną aplikacjĊ. W aplikacji wymagana jest klasa Klient, reprezentująca klientów firmy. Z klasą powiązany jest obiekt odpowiadający za komunikacjĊ z bazą danych. Ta czĊĞü aplikacji realizuje logikĊ klienta. Zwróü uwagĊ na to, Īe logika zawsze jest taka sama. Z drugiej strony reprezentacja wizualna Klienta moĪe byü róĪna w róĪnych czĊĞciach serwisu. Wystarczy, Īe jako przykáad rozwaĪysz widok w profilu Klienta oraz widok w panelu Administratora. Zwykle róĪnią siĊ one w znacznym stopniu. Wniosek páynący z tego jest oczywisty, moĪemy z klasy Klient korzystaü wielokrotnie. Jedyne, co trzeba zrobiü, to dopisaü odpowiedni szablon widoku. Mam nadziejĊ, Īe coraz bardziej dostrzegasz zalety takiego programowania. Pomocniki Pomocniki Symfony są funkcjami napisanymi w jĊzyku PHP. Realizują bardzo standar- dowe zadania, przez co uáatwiają konstruowanie widoków. Dla przykáadu, uĪywając odpowiedniego pomocnika Symfony, moĪesz wstawiü na stronĊ edytor WYSIWYG (What You See Is What You Get — to, co widzisz, jest tym, co otrzymasz), który pozwoli Ci áatwo formatowaü teksty. Inną waĪną cechą pomocników jest to, Īe wiele z nich jest zintegrowanych z mechanizmami Symfony. DziĊki temu tworzenie hiperáączy do akcji jest bardzo áatwe. Wystarczy, Īe wywoáasz odpowiedni pomocnik, podasz odpo- wiednie parametry, a dostaniesz na wyjĞciu kod uwzglĊdniający ustawienia frameworka (np. mechanizmy przepisywania linków). Wszystkie pomocniki zajmujące siĊ daną tematyką umieszczane są w jednym pliku. Nazwa kaĪdego pliku koĔczy siĊ tekstem Helper.php. Ze wzglĊdu na to bardzo czĊsto, mówiąc o pomocniku, ma siĊ na myĞli caáą grupĊ funkcji. Warto w tym miejscu zasta- nowiü siĊ, gdzie Symfony przechowuje pliki pomocników? Nie musisz gáĊboko szukaü. Wystarczy, Īe bĊdąc w katalogu projektu, wejdziesz do lib/symfony/helper. W tym miej- scu znajduje siĊ odpowiedĨ na postawione pytanie. Co prawda nie zrobiáeĞ zbyt wielu üwiczeĔ w module szablony, warto jednak w tym miejscu zrobiü nowy moduá. Utwórz wiĊc moduá pomocniki, co pozwoli Ci w przy- száoĞci áatwiej odnajdywaü potrzebne elementy. Na początek przypomnimy sobie kilka istotnych rzeczy. W tym celu dodaj do moduáu akcjĊ linkDoZasobu. Akcja nie zawiera Īadnego kodu. PoniĪej znajduje siĊ listing jej widoku: div h1 Wynik pomocnika url_for /h1 ?php echo url_for( /pomocniki/linkDoZasobu?pokaz=jablko ); ? br/ ?php echo url_for( /pomocniki/linkDoZasobu?pokaz=gruszka , true); ? br/ 118 PHP5. Programowanie z wykorzystaniem Symfony, CakePHP, Zend Framework /div hr/ div W przykáadzie uĪyáeĞ pomocnika url_for. Jego dziaáanie jest bardzo proste. Jako argu- ment podajesz tekst wskazujący zasób, w wyniku zaĞ dostajesz adres odpowiedni dla Symfony. ZauwaĪ, Īe format tego tekstu musi byü taki jak poniĪej: moduđ/akcja?parametr1=wartoħè1 parametr2=wartoħè2... Tekst zostanie przeksztaácony tak, Īeby uwzglĊdniü Twoją konfiguracjĊ Symfony. Spróbuj teraz napisaü inny przykáad. Zacznij od utworzenia akcji dolaczPomocnik. PoniĪej jest jej widok: div h3 Wynik dziađania auto_link_text /h3 ?php use_helper( Text ); echo auto_link_text( Aby umieħciè ofertú w serwisie http://www.allegro.pl naleľy zađoľyè konto uľytkownika na stronie http://allegro.pl/new_user.php ); ? div Co robi pomocnik auto_link_text? Wyszukuje w tekĞcie poprawne adresy URL i zamie- nia je na hiperáącza. Dziaáanie pomocnika jest wiĊc dosyü proste. O wiele ciekawsza jest instrukcja use_helper. Przyjmuje ona jako parametr nazwĊ grupy pomocników, którą naleĪy doáączyü do widoku. Dlaczego wiĊc poprzednio nigdy jej nie wywoáywaáeĞ? Pewne grupy najpowszechniej stosowanych pomocników doáączane są do widoków domyĞlnie. JeĪeli potrzebujesz mniej popularnych, musisz je doáączyü za pomocą use_helper. Zwróü uwagĊ na to, Īe wystarczy podaü nazwĊ grupy. Nie musisz podawaü caáej nazwy pliku. JeĪeli parametrem jest wartoĞü Text, do szablonu zostanie doáączony plik TextHelper.php. çwiczenie 4.1 Utwórz pomocnik FileHelper.php. Pomocnik zawiera jedną funkcjĊ o nazwie storage. Przyjmuje ona jako parametr wielkoĞü bĊdącą rozmiarem pliku w bajtach. Funkcja zwraca jako wynik rozmiar pliku w najlepiej dopasowanych jednostkach. Rozwiązanie W tym üwiczeniu nauczysz siĊ, w jaki sposób tworzyü wáasne pomocniki. Na począ- tek w katalogu moduáu pomocniki otwórz katalog lib. NastĊpnie utwórz w nim folder o nazwie helper. W kolejnym kroku musisz utworzyü plik FileHelper.php. JeĪeli udaáo Ci siĊ wszystko wykonaü poprawnie, otwórz plik helpera do edycji. Musisz teraz dopisaü do niego funkcjĊ realizującą zaáoĪenia z üwiczenia. PoniĪej przykáadowa imple- mentacja: Rozdziaä 4. i Warstwa widoku 119 ?php function storage( $size ) { $aUnits = array( B , KB , MB , GB , TB , PB , EB , ZB , YB ); $unitIndex = 0; while ($size = 1024) { $size /= 1024; $unitIndex++; } return round( $size, 1 ). .$aUnits[$unitIndex]; } ? SpróbujĊ teraz w paru sáowach wyjaĞniü, co robi funkcja. Po pierwsze, ustala indeks odpo- wiedniej jednostki. Po drugie, zmniejsza obecną wielkoĞü tak, Īeby pasowaáa do ustalonej jednostki. Analizując algorytm, pamiĊtaj, Īe 1 KB = 1024 B, 1 MB = 1024 KB itd. Teraz nadszedá czas na wypróbowanie utworzonego wáaĞnie helpera W tym celu musisz utworzyü akcjĊ wlasnyPomocnik. Widok akcji przedstawiony jest na listingu: ?php use_helper( File ); echo storage(1024), br / ; echo storage(1024*1024), br / ; echo storage(1024*1024*1024), br / ; ? Jak widzisz, wáasne pomocniki dodaje siĊ tak samo jak pozostaáe (niedomyĞlne). JeĪeli pomocnik zadziaáa dobrze, to na ekranie powinieneĞ zobaczyü nastĊpujący wynik: 1 KB 1 MB 1 GB PamiĊtaj, Īeby tworzyü pomocniki wtedy, kiedy są naprawdĊ potrzebne, tj. zawierają funkcje, których uĪywasz wielokrotnie w róĪnych czĊĞciach aplikacji. Pomocniki ogólnie dostöpne W poprzedniej sekcji mogáeĞ poczytaü o tym, Īe czĊĞü pomocników doáączana jest do widoku domyĞlnie. PoniĪej znajdziesz ich listĊ wraz z krótkim wyjaĞnieniem:  Helper — pomocnik odpowiadający za doáączanie innych pomocników,  Tag — pomocniki bazowe dla innych pomocników (zawierają funkcje tworzące znaczniki HTML),  Url — pomocniki konstruujące adresy URL,  Asset — pomocniki tworzące ĞcieĪki do zasobów oraz znaczniki wymagające ĞcieĪek do zasobów ( img ),  Partial — pomocniki pozwalające podzieliü widok na fragmenty zwane partialami (dowiesz siĊ o nich wiĊcej w dalszej czĊĞci), 120 PHP5. Programowanie z wykorzystaniem Symfony, CakePHP, Zend Framework  Cache — pomocniki zarządzające pamiĊcią podrĊczną,  Form — pomocniki wspomagające tworzenie kontrolek formularzy HTML. àatwo zauwaĪyü, Īe domyĞlna grupa pomocników oferuje caákiem spore moĪliwoĞci. Ponadto zawiera elementy, które są zdecydowanie najczĊĞciej uĪywane przez programi- stów. PamiĊtaj, jeĪeli nie jesteĞ pewny, co robi dany pomocnik, warto zajrzeü do jego kodu. Zawiera on wiele wskazówek, które moĪesz wykorzystaü podczas tworzenia wáa- snych pomocników. Layouty Z punktu widzenia poprawnoĞci HTML szablony nie są kompletnym kodem. Nie zawie- rają caáej struktury dokumentu, a jedynie pewną jego czeĞü. Z drugiej strony szablony pozwalają zachowaü niezaleĪnoĞü od logiki oraz podzieliü zadania na mniejsze czĊĞci. Ze wzglĊdu na cząstkowoĞü szablonów docelowo naleĪy je opakowaü w strukturĊ do- kumentu HTML. W ten sposób bĊdą stanowiáy razem kompletną stronĊ WWW. Sym- fony realizuje to zadanie za pomocą pliku zwanego layoutem. Zawiera on ogólną strukturĊ serwisu, ale nie zawiera jego treĞci. TreĞü tworzona jest przez szablony wido- ków i umieszczana w layoucie w przeznaczonych do tego celu miejscach. WiĊcej szcze- góáów poznasz, czytając dalszą czĊĞü rozdziaáu. Zanim przejdziesz dalej, powinieneĞ utworzyü nowy moduá o nazwie layout (pamiĊtaj o zakomentowaniu przekierowania akcji index). W module tym wykonasz wiele üwiczeĔ, które zwiĊkszą Twoją wiedzĊ i pozwolą lepiej operowaü elementami warstwy widoku. Zaczniemy od instalacji layoutu. çwiczenie 4.2 W pliku finanse_layout.zip umieszczony jest pewien layout. Zainstaluj go jako layout domyĞlny dla caáej aplikacji widok. Rozwiązanie Na początek rozpakuj archiwum zip. PrzejdĨ do katalogu gáównego Twojego projektu Symfony. Znajdziesz w nim katalog o nazwie web. Folder ten zawiera trzy istotne dla tego zadania podfoldery: css, images oraz js. W ich miejsce musisz przekopiowaü foldery (o takich samych nazwach) wypakowane wczeĞniej z archiwum. Drugi krok instalacji wymaga powrotu do katalogu gáównego projektu. NastĊpnie przejdĨ do katalogu apps/widok. Znajdziesz tutaj folder o nazwie templates. Jest to miejsce, w którym Symfony przechowuje layouty Twojej aplikacji. Nie pozostaje Ci nic innego, jak przekopiowaü do templates layout wypakowany z archiwum finanse_layout.zip. Ostatni krok polega na edycji pliku view.yml zawierającego konfiguracjĊ widoku dla aplikacji widok. W celu realizacji tego zadania otwórz plik do edycji. Znajdziesz go w hatalog_projektu /apps/widok/config. Plik zawiera sekcjĊ Rozdziaä 4. i Warstwa widoku 121 stylesheets: [main] ZmieĔ tekst main na style. Musisz tak zrobiü, poniewaĪ Twoje style zapisane są w pliku style.css, a nie w domyĞlnym pliku main.css. Teraz musisz przetestowaü instalacjĊ. W tym celu wpisz w przeglądarce http://127.0.0.1/widok.php/layout JeĪeli wszystkie polecenia wykonaáeĞ poprawnie, na ekranie zobaczysz zawartoĞü przed- stawioną na rysunku 4.1. Rysunek 4.1. Widok instalacji szablonu finanse_widok PamiĊtaj, domyĞlnie szablon uĪywany jest dla wszystkich widoków akcji. MoĪesz to oczywiĞcie zmieniü, o czym przekonasz siĊ w dalszej czĊĞci ksiąĪki. Inny layout Zmiana layoutu jest bardzo praktyczną rzeczą. Wiele serwisów praktykuje zmiany okolicznoĞciowe. Dla przykáadu, jeĪeli mamy sklep internetowy, byü moĪe zechcemy mu nadaü inny wygląd podczas Ğwiąt. çwiczenie 4.3 Zainstalowaü layout wizytowki dla wszystkich moduáów w aplikacji widok. Rozwiązanie Na początek musisz rozpakowaü archiwum wizytowki.zip. ZawartoĞü archiwum jest nastĊpująca: 1) plik wizytowki.php — nowy layout, 2) plik css/wizytowki.css — style okreĞlające strukturĊ oraz wygląd elementów serwisu, 3) pliki images/wizytowki/* — pliki graficzne uĪywane przez style oraz layout. 122 PHP5. Programowanie z wykorzystaniem Symfony, CakePHP, Zend Framework Zwróü uwagĊ na to, Īe pliki dla layoutu wizytowki nie są umieszczone w katalogu images. Powód jest prosty. W ten sposób áatwo oddzieliü pliki naleĪące do poszczegól- nych layoutów. Kolejny krok polega na przekopiowaniu pliku w odpowiednie miejsce struktury katalo- gów Symfony. Są to operacje identyczne w stosunku do omawianego poprzednio procesu instalacji. Musisz wiĊc przekopiowaü: 1) plik wizytówki.php do katalogu apps/widok/templates, 2) plik css/wizytowki.css do katalogu web/css, 3) caáy katalog images/wizytowki do katalogu web/images. W ten oto sposób udaáo Ci siĊ zainstalowaü layout. Teraz musisz poinformowaü Symfony o tym, który layout ma zostaü uĪyty dla Twoich akcji. W tym celu otwórz do edycji plik view.yml. Znajdziesz go w katalogu conf umieszczonym w aplikacji widok. PoniĪej znajdziesz listing pliku konfiguracyjnego: default: http_metas: content-type: text/html metas: title: Superwizytówki na kaľdæ kieszeē. robots: index, follow description: Tanie wizytówki dla firm. keywords: wizytówki, tanie wizytówki language: pl stylesheets: [wizytowki] javascripts: [] has_layout: on layout: wizytowki NajwaĪniejsze (z punktu widzenia instalacji layoutu) są dyrektywy stylesheets i layout. Pierwsza okreĞla nazwĊ pliku ze stylami, jakiego naleĪy uĪyü, druga zaĞ nazwĊ pliku layoutu, który naleĪy zastosowaü. PamiĊtaj, Īe po zmianie pliku yml naleĪy usunąü pamiĊü podrĊczną. MoĪesz to zrobiü przykáadowo tak: symfony.bat cc Argument cc jest skrótem dla clear cache (czyĞü pamiĊü podrĊczną). Testowanie instalacji wymaga wywoáania w przeglądarce adresu: http://127.0.0.1/widok.php/layout. JeĪeli wszystko przebiegáo poprawnie, w oknie przeglądarki zobaczysz widok zaprezen- towany na rysunku 4.2. Rozdziaä 4. i Warstwa widoku 123 Rysunek 4.2. Nowy layout Co, jeĪeli „skoĔczą siĊ ĞwiĊta” i zechcesz wróciü do starego layoutu? Musisz zmieniü konfiguracjĊ w pliku view.yml, wyczyĞciü pamiĊü podrĊczną i... to juĪ wszystko. Pomocniki w layoutach MoĪesz uĪywaü w layoutach dowolnego zestawu pomocników. Na pierwszy ogieĔ idą jednak zwykle te, które odpowiadają za generowanie znaczników dla sekcji HEAD. Otwórz na chwilĊ plik wizytowki.php. Na początku pliku znajdziesz instrukcje: ?php include_http_metas(); include_metas(); include_title(); ? Wszystkie uĪyte powyĪej funkcje to pomocniki. Odpowiadają za umieszczenie w sekcji HEAD wartoĞci podanych w pliku konfiguracyjnym view.yml. WartoĞciami tymi są nazwy plików CSS, nazwy plików JS, tekst tytuáu itp. Zaletą takiego podejĞcia jest moĪli- woĞü dostosowywania sekcji HEAD dla moduáu a nawet widoku akcji. Przekonasz siĊ o tym w dalszej czĊĞci ksiąĪki. Zmiana layoutu dla moduäu Zmiana layoutu na poziomie moduáu jest bardzo waĪną cechą Symfony. W ten sposób moĪesz budowaü moduáy jako niezaleĪne czĊĞci serwisu posiadające indywidualny widok (dostosowany do tematyki). Dla przykáadu, w serwisach informacyjnych inaczej moĪna przedstawiaü dane o sporcie, inaczej o gospodarce itp. 124 PHP5. Programowanie z wykorzystaniem Symfony, CakePHP, Zend Framework çwiczenie 4.4 Utwórz moduá o nazwie layout2 (w aplikacji widok). OkreĞl layout.php jako domyĞlny dla caáego moduáu. Rozwiązanie Na początek utwórz moduá: symfony init-mod widok layout2 PrzejdĨ do moduáu, otwórz plik action.class.php i zakomentuj instrukcjĊ umieszczoną w akcji index. NastĊpnie w katalogu layout2/config utwórz plik o nazwie view.yml. Do pliku wprowadĨ konfiguracjĊ przedstawioną na listingu poniĪej: all: layout: layout stylesheets: [style] PoniewaĪ zmiana dotyczy pliku YML, musisz wyczyĞciü pamiĊü podrĊczną. Na koniec wywoáaj w przeglądarce poniĪsze adresy: http://127.0.0.1/widok.php/layout http://127.0.0.1/widok.php/layout2 JeĪeli wszystkie operacje wykonaáeĞ poprawnie, w przeglądarce zobaczysz dwa róĪne layouty. I o to wáaĞnie chodziáo! Zmiana layoutu dla szablonu widoku Projektanci Symfony nie zatrzymali siĊ na zmianie szablonu do moduáu. Poszli zdecy- dowanie dalej, pozwalając programiĞcie na wymianĊ layoutu dla konkretnego widoku. çwiczenie 4.5 Utworzyü akcjĊ historia w module layout2. Dla akcji ustawiü layout wizytowki. Rozwiązanie W pliku actions.class.php utwórz pustą akcjĊ historia. Ponadto w katalogu templates (moduáu layout2) umieĞü pusty szablon widoku (jest to równoznaczne z utworzeniem pustego pliku historiaSuccess.php). NastĊpnie dodaj do pliku view.yml poniĪszą kon- figuracjĊ: historiaSuccess: layout: wizytowki stylesheets: [wizytowki] Pozostaáo jeszcze wyczyĞciü pamiĊü podrĊczną i wywoáaü Īądanie akcji w przeglądarce. Rozdziaä 4. i Warstwa widoku 125 No i jak wynik? Niestety, niezbyt miáy dla oka. Co prawda akcja korzysta z wáaĞciwego layoutu, ale coĞ jednak nie gra. Pytanie tylko, co? OdpowiedĨ jest dosyü prosta. Ponie- waĪ dla moduáu domyĞlnym layoutem jest layout.php, wymieszaáy nam siĊ style. Jak temu zapobiec? WáaĞciwa konfiguracja na tym poziomie powinna wyglądaü tak: all: layout: layout stylesheets: [-wizytowki, style] historiaSuccess: layout: wizytowki stylesheets: [-style, wizytowki] Jak widzisz, jest ona prawie taka sama jak poprzednia. Jednak, jak powszechnie wiadomo, „prawie” robi wielką róĪnicĊ. Zwróü uwagĊ na minus przed niektórymi nazwami plików. Oznacza on, Īe w danym miejscu nie naleĪy pliku doáączaü do kodu wynikowego. WyczyĞü wiĊc pamiĊü podrĊczną, odĞwieĪ stronĊ w przeglądarce i voilà! Zmiana layoutu dla akcji W poprzedniej sekcji dowiedziaáeĞ siĊ, jak zmieniü layout dla konkretnego widoku. MoĪesz w ten sposób ustawiü inny layout dla szablonu sukcesu, inny dla szablonu báĊdu itp. Co jednak w przypadku, kiedy chciaábyĞ, aby szablony widoków jednej akcji korzystaáy z tego samego layoutu? MoĪesz oczywiĞcie kaĪdy widok konfigurowaü oddzielnie. Nie jest to nawet aĪ tak káopotliwe. Istnieje jednak znacznie prostsza metoda, która pozwala przypisywaü layout do wszystkich widoków akcji jednoczeĞnie. çwiczenie 4.6 Utwórz akcje layoutDlaAkcji. KaĪdy widok utworzonej akcji musi korzystaü z layoutu o nazwie wizytowki. Rozwiązanie Utwórz pustą akcje layoutDlaAkcji oraz pusty szablon widoku. Wpisz w pasku adresu http://127.0.0.1/widok.php/layout2/layoutDlaAkcji i upewnij siĊ, Īe akcja korzysta z pliku layout.php. Kolejnym krokiem jest edycja akcji. Musisz do niej dopisaü poniĪszą instrukcjĊ: $this- setLayout( wizytowki ); Metoda setLayout pozwala okreĞliü nazwĊ layoutu, jaki naleĪy uĪyü dla akcji. MoĪesz teraz odĞwieĪyü stronĊ w przeglądarce. Pewne zmiany juĪ widaü, jednak áatwo zauwa- Īysz, Īe coĞ jeszcze wymaga dopracowania. àatwo siĊ domyĞliü, Īe brakuje popraw- nych stylów. Dopisz do akcji instrukcjĊ: $this- getResponse()- addStylesheet( wizytowki ); i ponownie odĞwieĪ stronĊ w przeglądarce. Efekt jest nieco lepszy, jednak nie do koĔca dobry. Metoda addStylesheet (wywoáywana dla obiektu odpowiedzi — sfWebResponse) 126 PHP5. Programowanie z wykorzystaniem Symfony, CakePHP, Zend Framework doáącza plik ze stylami. Ponadto w ukáadzie, który uzyskaáeĞ, do widoku doáączany jest równieĪ plik style.css (konfiguracja dla caáego moduáu). Niestety, pliki te nieco sobie przeszkadzają. W Symfony 1.0 nie ma áatwego sposobu na usuniĊcie zbĊdnego pliku z odpowiedzi. Najprostszą metodą jest stworzenie odpowiedniego wpisu w pliku view.yml. W tym celu musisz dopisaü poniĪsze dyrektywy: layoutDlaAkcjiSuccess: stylesheets: [-style] Teraz musisz jeszcze wyczyĞciü pamiĊü podrĊczną, odĞwieĪyü stronĊ — i wszystko powinno byü juĪ na swoim miejscu. Co prawda byáo trochĊ problemów, jednak efekt jest zgodny z oczekiwanym. Usuwanie layoutu Niektóre akcje, jak na przykáad Īądania AJAX, nie wymagają layoutu. PowinieneĞ wiĊc wiedzieü, w jaki sposób moĪna go wyáączyü, jeĪeli zajdzie taka potrzeba. çwiczenie 4.7 Utwórz akcjĊ bezLayoutuYML. Zablokuj dla niej dekorowanie layoutem. Rozwiązanie W pliku actions.class.php utwórz akcjĊ bezLayoutuYML. Widok bezLayoutuYMLSuccess przedstawiony jest poniĪej: div Ta akcja nie potrzebuje dekorowania layoutem /div NastĊpnie otwórz plik view.yml do edycji i dopisz do niego poniĪsze dyrektywy: bezLayoutuYMLSuccess: layout: no WyczyĞü pamiĊü podrĊczną, a nastĊpnie odĞwieĪ stronĊ. JeĪeli wszystko zrobiáeĞ dobrze, w oknie przeglądarki zobaczysz jedynie napis: Ta akcja nie potrzebuje dekorowania layoutem Na koniec zajrzyj do kodu Ĩródáowego. àatwo zauwaĪysz, Īe poza kodem, który wpisa- áeĞ w widoku akcji, niczego wiĊcej w kodzie Ĩródáowym nie ma. çwiczenie 4.8 Utwórz akcjĊ brakLayoutuAkcja. Zablokuj dla niej dekorowanie layoutem. Rozwiązanie ûwiczenie, które teraz wykonasz, jest bardzo podobne do poprzedniego. RóĪnica bĊdzie polegaáa na tym, Īe tym razem usuniemy layout z poziomu akcji. Na początek utwórz pustą akcjĊ oraz widok sukcesu. W widoku wprowadĨ taką treĞü jak poprzednio. NastĊp- nie dopisz do akcji poniĪszą instrukcjĊ: Rozdziaä 4. i Warstwa widoku 127 $this- setLayout(false); Podanie wartoĞci false dla metody setLayout oznacza wyáączenie dekorowania layoutem. I o to wáaĞnie nam chodziáo. Elementy widoku KaĪdy element widoku ma dostĊp do pewnego zbioru zmiennych Symfony. Do najwaĪ- niejszych z nich naleĪą:  $sf_context — obiekt udostĊpniający kontekst Īądania,  $sf_request — obiekt udostĊpniający informacje o Īądaniu,  $sf_params — obiekt udostĊpniający parametry przesáane w Īądaniu,  $sf_user — obiekt udostĊpniający dane uĪytkownika (w tym sesje). Wszystkie obiekty przedstawione powyĪej poznaáeĞ juĪ wczeĞniej. Byáy one szeroko omówione w rozdziale 2. „Warstwa kontrolera”. W dalszych czĊĞciach tego rozdziaáu nauczysz siĊ, jak korzystaü z tych obiektów w widoku. Proste doäñczanie pliku W kaĪdym serwisie WWW pewne elementy strony są wspólne dla róĪnych stron. Do takich elementów moĪna zaliczyü stopkĊ, menu itp. PoniewaĪ dobrze zaprogramowany serwis nie powinien dublowaü kodu, zwykle elementy takie umieszczane są w osob- nych plikach. NastĊpnie pliki te doáączane są we wáaĞciwych czĊĞciach serwisu. Na początek zapoznasz siĊ z prostym doáączaniem plików. W tym celu utwórz moduá elementy_widoku, a nastĊpnie rozwiąĪ poniĪsze üwiczenie. çwiczenie 4.9 Utwórz kopiĊ layoutu wizytowki.php. Nowy plik nazwaü wizytowki_dolaczenie.php. NastĊpnie utwórz plik menu.php. Plik zawiera kod generujący pozycje O firmie, Oferta, Nasze sklepy. Ustaw utworzony layout jako domyĞlny dla akcji index. Rozwiązanie Na początek utwórz kopiĊ layoutu wizytowki.php i zmieĔ jej nazwĊ tak jak w polece- niu. Operacja jest bardzo prosta. PamiĊtaj jedynie o tym, Īe kopia musi byü zapisana w katalogu templates aplikacji widok. W tym samym katalogu utwórz plik menu.php i wprowadĨ do niego poniĪszy kod: ul class= fl li style= background: none; a href= span O firmie /span /a /li li a href= span Oferta /span /a /li li a href= span Nasze sklepy /span /a /li li a href= span Referencje /span /a /li /ul 128 PHP5. Programowanie z wykorzystaniem Symfony, CakePHP, Zend Framework NastĊpnie odszukaj w pliku wizytowki_dolaczenie.php kod wyglądający bardzo podobnie. Zastąp ten kod (áącznie ze znacznikami ul) poniĪszą instrukcją: ?php include( sfConfig::get( sf_app_template_dir ). /menu.php ); ? Doáączenie pliku wymaga okreĞlenia ĞcieĪki do pliku. Z tego powodu musiaáeĞ uĪyü klasy sfConfig. Za pomocą jej metod moĪesz pobieraü informacje o Ğrodowisku Symfony. W przykáadzie uĪyáeĞ metody get do pobrania wartoĞci dyrektywy sf_app_template_dir. Dyrektywa przechowuje ĞcieĪkĊ do katalogu z layoutami aplikacji. NaleĪaáo wiĊc jedy- nie dokleiü do otrzymanej ĞcieĪki nazwĊ doáączanego pliku, co uczyniáeĞ. Wróümy do przykáadu. Plik layoutu po zmianach powinien wyglądaü tak: div id= right_menu ?php echo image_tag( wizytowki/right_menu_top.jpg , class= fl ) ? ?php include( sfConfig::get( sf_app_template_dir ). /menu.php ); ? ?php echo image_tag( wizytowki/right_menu_bottom.jpg , class= fl ) ? div class= cl /div /div Kolejny krok, jaki musisz wykonaü, polega na ustawieniu layoutu dla akcji index. W tym celu otwórz plik actions.class.php i zmodyfikuj akcjĊ index, jak przedstawiono na listingu: public function executeIndex() { $this- getResponse()- addStyleSheet( wizytowki ); $this- setLayout( wizytowki_dolaczanie ); } Obie instrukcje uĪyte w akcji poznaáeĞ juĪ wczeĞniej. Pierwsza dodaje do odpowiedzi plik ze stylami, druga zaĞ zmienia szablon. PoniewaĪ wszystko, co trzeba, juĪ wykonaáeĞ, nad- szedá czas na testy. W przeglądarce wpisz adres: http://127.0.0.1/widok.php/elementy_widoku JeĪeli wszystko zrobiáeĞ poprawnie, na ekranie zobaczysz layout zawierający menu z pliku menu.php. Niestety, przedstawione rozwiązanie ma kilka istotnych wad. Do najwaĪniejszych z nich naleĪą:  Zmienne w róĪnych plikach mogą mieü takie same nazwy. W ten sposób powodujemy konflikt nazw.  System pamiĊci podrĊcznej zaimplementowany w Symfony nie potrafi wykrywaü doáączania plików. Z tego powodu kaĪde uĪycie menu.php zostanie wpisane do pamiĊci podrĊcznej, co z pewnoĞcią nie jest poĪądane. W dalszej czĊĞci ksiąĪki poznasz rozwiązania omijające opisane powyĪej niedogodnoĞci. Partiale Partiale są elementami widoku przypominającymi funkcje w jĊzyku programowania. Za ich pomocą moĪna grupowaü kod widoku, a nastĊpnie wielokrotnie z niego korzystaü. Dla przykáadu, kod HTML wyĞwietlający wiersz tabeli moĪemy umieĞciü w partialu. Rozdziaä 4. i Warstwa widoku 129 NastĊpnie partial wywoáamy w widoku tyle razy, ile potrzeba. W ten sposób zmiany doty- czące tabeli, takie jak przestawienie kolumn itp., wykonywane są w jednym miejscu. Ponadto partiale rozwiązują problemy opisane w poprzedniej sekcji. Partiale mogą byü uĪywane w róĪnych elementach widoku. MoĪemy z nich korzystaü w layoutach, szablonach widoku akcji, jak równieĪ w innych partialach. Jak rozpoznaü partial? OtóĪ kaĪdy partial musi byü zapisany w osobnym pliku. Nazwy tych plików musi rozpoczynaü znak podkreĞlenia. Rozpoznanie partiala nie jest wiĊc trudne. çwiczenie 4.10 Utwórz partial pozwalający wyĞwietliü na stronie dodatkowe menu. Nowe menu zawiera nastĊpujące linki: ostatnio dodane, najpopularniejsze i najlepiej ocenione. Menu ma byü pokazane pod utworzonym w üwiczeniu 4.9. Rozwiązanie Partial, który utworzysz, bĊdzie czĊĞcią layoutu. Z tego powodu musisz go zapisaü w katalogu templates dla aplikacji. PrzejdĨ wiĊc do tego katalogu, a nastĊpnie utwórz plik o nazwie _menu_dolne.php. PoniĪej znajduje siĊ przykáadowy listing pliku: ul class= fl li a href= span Ostatnio dodane /span /a /li li a href= span Najpopularniejsze /span /a /li li a href= span Najlepiej ocenione /span /a /li /ul Jak widzisz, jest to menu w takim samym stylu jak poprzednie. Teraz wystarczy doáączyü partial do layoutu. W tym celu znajdĨ znacznik z atrybutem id równym right_menu. Po poleceniu div class= cl /div musisz dodaü nastĊpujący kod: ?php echo image_tag( wizytowki/right_menu_top.jpg , class= fl ) ? ?php include_partial( global/menu_dolne ); ? ?php echo image_tag( wizytowki/right_menu_bottom.jpg , class= fl ) ? div class= cl /div Zwróü uwagĊ, w jaki sposób kod partiala umieszczany jest w layoucie. Po pierwsze, musisz wywoáaü funkcjĊ include_partial, która odpowiada za przetworzenie partiala. Po drugie, partiale utworzone dla layoutu naleĪy poprzedziü sáowem kluczowym global. W ten sposób informujesz Symfony, Īe potrzebny plik znajdzie w katalogu templates aplikacji. Partiale w widokach akcji W poprzedniej sekcji dowiedziaáeĞ siĊ, w jaki sposób doáącza siĊ partial zapisany w tym samym katalogu co layout. Tym razem poznasz reguáy doáączania partiali w wido- kach akcji. Na początek wyobraĨ sobie, Īe chcesz doáączyü partial _menu_osobiste do widoku logowanieSuccess. Widok znajduje siĊ w module uzytkownik. PoniĪej znajdziesz wyjaĞnienie, jak moĪesz to zrobiü: 130 PHP5. Programowanie z wykorzystaniem Symfony, CakePHP, Zend Framework 1. JeĪeli partial znajduje siĊ w katalogu templates dla moduáu uzytkownik, doáączysz go za pomocą instrukcji: include_partial( menu_osobite ); 2. JeĪeli partial znajduje siĊ w katalogu templates innego moduáu, doáączysz go za pomocą instrukcji include_partial( nazwa_moduđu/menu_osobiste ) 3. JeĪeli partial znajduje siĊ w katalogu templates caáej aplikacji, doáączysz go za pomocą instrukcji include_partial( global/menu_osobiste ) Zagadnienie omówione powyĪej sprawdzisz, wykonując kolejne üwiczenie. çwiczenie 4.11 W module elementy_widoku utwórz pustą akcjĊ zamówienia. Do widoku akcji doáącz partial oferta. Partial wyĞwietli ofertĊ w formie listy. Rozwiązanie Zacznij od przygotowaĔ wstĊpnych. Po pierwsze, utwórz akcjĊ zamowienia oraz widok zamowieniaSuccess. Po drugie, ustaw dla widoku akcji layout wizytowki_dolaczanie. Po trzecie, wyczyĞü pamiĊü podrĊczną i sprawdĨ, czy widok akcji dekorowany jest odpowiednim layoutem. PrzejdĨ do katalogu nazwa_projektu /apps/widok/modules/elementy_widoku/templates. Utwórz nowy plik i nazwij go _oferta.php. W pliku umieĞü kod przedstawiony na listingu: ul li wizytówki /li li kalendarze /li li prospekty /li /ul Jak widzisz, kod zawiera standardową listĊ HTML. W kolejnym kroku musisz wprowadziü zawartoĞü do pliku zamowieniaSuccess.php. Przykáadowy kod przedstawiony jest poniĪej: p class= header Zamówienia indywidualne ?php echo image_tag( wizytowki/ul_dot.gif , class= fl ) ? Rok 2006 /p p class= hr /p p Treħè akcji /p p Treħè akcji /p p Treħè akcji /p p Treħè akcji /p p Treħè akcji /p ?php include_partial( oferta ); ? Rozdziaä 4. i Warstwa widoku 131 W widoku akcji uĪyáeĞ instrukcji include_partial. Przyjmuje ona jeden argument o war- toĞci oferta. W ten sposób lista zostanie dodana do ogólnego wyniku. Ale czy aby na pewno? W przeglądarce wywoáaj Īądanie: http://127.0.0.1/widok.php/elementy_widoku/zamowienia Niestety, widoczny rezultat jest daleki od oczekiwanego. Co wiĊc poszáo nie tak? OtóĪ Īeby zobaczyü dane produkowane w widoku akcji, naleĪy na to przygotowaü layout. W tym celu otwórz go do edycji i znajdĨ znacznik: div class= content UsuĔ caáą zwartoĞü znacznika. Teraz musisz dodaü instrukcjĊ wyĞwietlającą dane z akcji. PoniĪej znajduje siĊ kod, który wykona to zadanie: div class= content ?php echo $sf_data- getRaw( sf_content ); ? /div Zwróü uwagĊ na obiekt $sf_data, który przechowuje rozmaite dane. MoĪna je pobieraü, uĪywając metody getRaw. Przyjmuje ona jako parametr wartoĞü identyfikującą dane, które chcemy pobraü. JeĪeli uĪyjesz sf_content, pobierzesz kod HTML wyprodukowany przez widok akcji. Teraz moĪesz juĪ odĞwieĪyü okno przeglądarki. Wynik akcji powinien byü taki jak na rysunku 4.3. Zawiera on widok akcji z kodem partiala opakowany w layout. O to wáaĞnie chodziáo. Rysunek 4.3. Dekorowanie wyniku akcji layoutem Przekazywanie parametrów do partiala Niewątpliwie olbrzymią zaletą partiali jest moĪliwoĞü przekazywania dla nich parame- trów. W jaki sposób moĪna to zrobiü? NaleĪy uĪyü drugiego parametru, wywoáując include_partial. WiĊcej dowiesz siĊ z kolejnego przykáadu. çwiczenie 4.12 Utwórz partial lista. Jako parametr przyjmuje on tablicĊ elementów, jakie naleĪy umie- Ğciü na liĞcie. 132 PHP5. Programowanie z wykorzystaniem Symfony, CakePHP, Zend Framework Rozwiązanie Zadanie, które musisz teraz wykonaü, jest nieco bardziej záoĪone niĪ poprzednie. Postaram siĊ jednak, aby nie sprawiáo Ci zbyt duĪych trudnoĞci. Zacznij od utworzenia w kata- logu templates pustego pliku _lista.php. PoniĪej znajdziesz przykáadowy kod partiala: ul ?php foreach( $aTablicaElementow as $sElement): ? li ?php echo $sElement; ? /li ?php endforeach; ? /ul W pierwszej chwili Twoją uwagĊ moĪe przykuü dziwna konstrukcja foreach. W przy- káadzie uĪyáem alternatywnej skáadni, która jest bardzo wygodna na uĪytek szablonów. Pozwala áatwo oddzieliü kod HTML od kodu PHP. WiĊcej na ten temat znajdziesz na stronie http://php.net.pl/manual/pl/control-structures.alternative-syntax.php. Skup siĊ teraz na tym, co jest istotą üwiczenia. W pĊtli foreach wykorzystaáeĞ zmienną $aTablicaElementow. Skąd ona siĊ tam wziĊáa? NajproĞciej rzecz ujmując, zmienna zostaáa przekazana jako parametr funkcji include_partial. àatwo zauwaĪysz, Īe wewnątrz partiala nie trzeba uĪywaü Īadnej specjalnej konstrukcji. W kolejnym kroku musisz przygotowaü dane dla partiala. PrzejdĨ do akcji zamowienia i dodaj do niej nastĊpujący kod: $this- aOferta = array( wizytówki , kalendarze , prospekty ); PowyĪszy kod jest niczym wiĊcej jak tablicą zawierającą elementy o wartoĞci: wizytówki, kalendarze i prospekty. Zwróü uwagĊ na to, Īe tablica b
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

PHP5. Programowanie z wykorzystaniem Symfony, CakePHP, Zend Framework
Autor:
,

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: