wszelkie prawa zastrzeżone. nieautoryzowane ...pdf.helion.pl/symfo2/symfo2.pdf · spis treci 9...

26

Upload: phungmien

Post on 28-Feb-2019

219 views

Category:

Documents


0 download

TRANSCRIPT

Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji.

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.

Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce.

Redaktor prowadzący: Ewelina BurskaProjekt okładki: Jan PaluchMateriały graficzne na okładce zostały wykorzystane za zgodą Shutterstock.

Wydawnictwo HELIONul. Kościuszki 1c, 44-100 GLIWICEtel. 32 231 22 19, 32 230 98 63e-mail: [email protected]: http://helion.pl (księgarnia internetowa, katalog książek)

Drogi Czytelniku!Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie?symfo2Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.

Przykłady omówione w książce są dostępne pod adresem:ftp://ftp.helion.pl/przyklady/symfo2.zip

ISBN: 978-83-246-3498-9

Copyright © Helion 2012

Printed in Poland.

• Kup książkę• Poleć książkę • Oceń książkę

• Księgarnia internetowa• Lubię to! » Nasza społeczność

Spis tre�ciPodzi�kowania .............................................................................. 13

Cz��� I Tworzenie prostych stron WWW .................................... 15

Rozdzia� 1. Uruchomienie przyk�adowego projektu ........................................... 17Dystrybucja with vendors — oko�o 6 MB ....................................................................... 17Dystrybucja without vendors — oko�o 200 kB ............................................................. 17Przyk�ad 1.1. Aplikacja przyk�adowa ............................................................................ 18

ROZWI�ZANIE ..................................................................................................... 18Podsumowanie .............................................................................................................. 22

Rozdzia� 2. Hello, world! .................................................................................. 25Przestrzenie nazw .......................................................................................................... 25Pakiet ............................................................................................................................. 26Kontroler i akcja ............................................................................................................ 27Widok ............................................................................................................................ 28Przyk�ad 2.1. Hello, world! ........................................................................................... 28

ROZWI�ZANIE ..................................................................................................... 28Zmodyfikowane pliki .................................................................................................... 39�rodowiska pracy .......................................................................................................... 40Tworzenie i usuwanie pakietów .................................................................................... 42U�ycie przestrzeni nazewniczych .................................................................................. 42Cechy Symfony 2 .......................................................................................................... 44

Formaty konfiguracji ............................................................................................... 44Uruchomienie gotowego przyk�adu ............................................................................... 46

Rozdzia� 3. Do��czanie zewn�trznych zasobów ................................................. 47Przyk�ad 3.1. Pusta Dolinka .......................................................................................... 49

ROZWI�ZANIE ..................................................................................................... 49Przyk�ad 3.2. Dolina Pi�ciu Stawów Polskich ............................................................... 53

ROZWI�ZANIE ..................................................................................................... 53

Rozdzia� 4. Szablon witryny ............................................................................. 57Przyk�ad 4.1. Dwa kabele .............................................................................................. 60

ROZWI�ZANIE ..................................................................................................... 61

Rozdzia� 5. Hiper��cza i struktura aplikacji ...................................................... 65Tworzenie i usuwanie akcji ........................................................................................... 65Tworzenie i usuwanie kontrolerów ............................................................................... 67

4 Symfony 2 od podstaw

Tworzenie i usuwanie pakietów .................................................................................... 67Definiowanie adresów URL akcji ................................................................................. 68Przyk�ad 5.1. Fraszki ..................................................................................................... 69

ROZWI�ZANIE ..................................................................................................... 69Przyk�ad 5.2. Zabytki Lublina ....................................................................................... 72

ROZWI�ZANIE ..................................................................................................... 74Przyk�ad 5.3. Piosenki dla dzieci ................................................................................... 77

ROZWI�ZANIE ..................................................................................................... 78

Rozdzia� 6. B��dy 404 ..................................................................................... 83Strony b��dów w Symfony 2 ......................................................................................... 84Przyk�ad 6.1. Gady ........................................................................................................ 86

ROZWI�ZANIE ..................................................................................................... 86Nadpisywanie widoków dowolnych pakietów .............................................................. 91Programowe generowanie b��dów 404 oraz 500 ........................................................... 92

Rozdzia� 7. Publikowanie projektu na serwerze hostingowym ........................... 93Przyk�ad 7.1. Gady — wersja lokalna z w�asn� domen� ............................................... 93

ROZWI�ZANIE ..................................................................................................... 94Przyk�ad 7.2. Gady — wersja z serwera firmy NetArt .................................................. 95

ROZWI�ZANIE ..................................................................................................... 95Przyk�ad 7.3. Gady — wersja z serwera firmy Light Hosting ....................................... 97

ROZWI�ZANIE ..................................................................................................... 97

Rozdzia� 8. Podsumowanie cz��ci I ............................................................... 101Dystrybucje Symfony 2 ............................................................................................... 101Przyk�adowa aplikacja ACME demo .......................................................................... 101Pierwszy samodzielnie wykonany projekt ................................................................... 102Zewn�trzne zasoby ...................................................................................................... 103Szablon witryny .......................................................................................................... 103Podstawy routingu ....................................................................................................... 104B��dy 404 .................................................................................................................... 104Publikowanie projektu ................................................................................................. 105Przyk�ad 8.1. Przygotowanie pakietu symfony2-customized-v1.zip

(bez przyk�adu src/Acme) ......................................................................................... 106ROZWI�ZANIE ................................................................................................... 106

Cz��� II Widoki ....................................................................... 109

Rozdzia� 9. Twig ........................................................................................... 111Logiczne nazwy widoków ........................................................................................... 111Nadpisywanie widoków z folderu vendor ................................................................... 113Nazwy widoków akcji ................................................................................................. 114Przyk�ad 9.1. Nazwy logiczne widoków, adnotacja @Template() i metoda render() ....... 116

ROZWI�ZANIE ................................................................................................... 116Sk�adnia widoków Twig .............................................................................................. 119Wy��czanie interpretacji w szablonie .......................................................................... 120Przyk�ad 9.2. Wy��czanie interpretacji fragmentu szablonu ........................................ 121

ROZWI�ZANIE ................................................................................................... 122Podwójne rozszerzenie .html.twig ............................................................................... 123

Modyfikacja nag�ówka Content-Type przy u�yciu parametru _format ................. 124Modyfikacja nag�ówka Content-Type metod� set() .............................................. 124

Przyk�ad 9.3. Modyfikacja nag�ówka Content-Type ................................................... 125ROZWI�ZANIE ................................................................................................... 125

Spis tre�ci 5

Rozdzia� 10. Zmienne, wyra�enia i operatory Twig ........................................... 129Przekazywanie zmiennych do widoku ........................................................................ 129Przyk�ad 10.1. Data i godzina ...................................................................................... 130

ROZWI�ZANIE ................................................................................................... 131Zabezpieczanie zmiennych .......................................................................................... 132Przyk�ad 10.2. Zabezpieczanie zmiennych .................................................................. 134

ROZWI�ZANIE ................................................................................................... 135Przekazywanie do widoku tablic ................................................................................. 138Przekazywanie do widoku obiektów ........................................................................... 139Wyra�enia Twig .......................................................................................................... 139Operatory Twig ........................................................................................................... 141Definiowanie zmiennych wewn�trz widoku ................................................................ 144Zmienne globalne ........................................................................................................ 145

Rozdzia� 11. Instrukcje steruj�ce for oraz if ..................................................... 147Instrukcja for ............................................................................................................... 147Instrukcja if ................................................................................................................. 150Przyk�ad 11.1. Korona ziemi ....................................................................................... 151

ROZWI�ZANIE ................................................................................................... 152Przyk�ad 11.2. Dzie�a literatury �wiatowej .................................................................. 155

ROZWI�ZANIE ................................................................................................... 155Przyk�ad 11.3. Tabliczka mno�enia ............................................................................. 157

ROZWI�ZANIE ................................................................................................... 157Przyk�ad 11.4. Tabela pot�g ........................................................................................ 161

ROZWI�ZANIE ................................................................................................... 161Przyk�ad 11.5. Bezpieczna paleta kolorów .................................................................. 163

ROZWI�ZANIE ................................................................................................... 164

Rozdzia� 12. Znaczniki, filtry i funkcje ............................................................. 169Znaczniki Twig ........................................................................................................... 169

Znaczniki for oraz if .............................................................................................. 171Znaczniki macro, from i import ............................................................................ 171Znacznik filter ....................................................................................................... 172Znacznik set .......................................................................................................... 173Znacznik extends ................................................................................................... 173Znacznik block ...................................................................................................... 175Znaczniki extends i block oraz dziedziczenie ....................................................... 175Znacznik use ......................................................................................................... 178Znacznik include ................................................................................................... 179Znacznik spaceless ................................................................................................ 179Znacznik autoescape ............................................................................................. 180Znacznik raw ......................................................................................................... 180Znacznik flush ....................................................................................................... 180Znacznik do ........................................................................................................... 180Znacznik render ..................................................................................................... 181

Filtry ............................................................................................................................ 181Funkcje ........................................................................................................................ 184Przyk�ad 12.1. Piosenki dzieci�ce ............................................................................... 185

ROZWI�ZANIE ................................................................................................... 186

Rozdzia� 13. Trójstopniowy podzia� widoków .................................................... 195Przyk�ad 13.1. Opowiadania Edgara Allana Poe ......................................................... 197

ROZWI�ZANIE ................................................................................................... 198

Rozdzia� 14. Podsumowanie cz��ci II .............................................................. 205

6 Symfony 2 od podstaw

Cz��� III Dostosowywanie Symfony 2 ........................................ 207

Rozdzia� 15. Dodawanie nowych pakietów ....................................................... 209Lista pakietów zawartych w Symfony ......................................................................... 209Zawarto� folderu vendor/ ........................................................................................... 210Pobieranie pakietów do folderu vendor/ .......................................................................... 211Do��czanie pakietów do kodu ..................................................................................... 212Przyk�ad 15.1. Przygotowanie dystrybucji symfony2-customized-v2

zawieraj�cej pakiet DoctrineFixturesBundle ............................................................ 212ROZWI�ZANIE ................................................................................................... 213

Rozdzia� 16. Podsumowanie cz��ci III ............................................................. 217

Cz��� IV Praca z baz� danych ................................................... 219

Rozdzia� 17. Pierwszy projekt wykorzystuj�cy baz� danych .............................. 221Przyk�ad 17.1. Imiona ................................................................................................. 221

ROZWI�ZANIE ................................................................................................... 222

Rozdzia� 18. ORM Doctrine 2 .......................................................................... 233Tworzenie i usuwanie bazy danych ............................................................................. 233Doctrine 2.1 ................................................................................................................. 234Tworzenie tabel w bazie danych ................................................................................. 235Struktura klas dost�pu do bazy danych ....................................................................... 236Dodawanie nowych w�a�ciwo�ci do istniej�cej klasy ................................................. 237Typy danych ................................................................................................................ 238Operowanie klasami dost�pu do bazy danych ............................................................. 240

Klasy Entity i EntityManager ................................................................................ 240Stan obiektu Entity ................................................................................................ 241Tworzenie nowych rekordów ................................................................................ 242Usuwanie rekordów .............................................................................................. 243Pobieranie wszystkich rekordów z bazy ................................................................ 243

Przyk�ad 18.1. Rzeki ................................................................................................... 243ROZWI�ZANIE ................................................................................................... 244

Rozdzia� 19. Dostosowywanie klas dost�pu do bazy danych ............................. 251Klasy Entity oraz Repository ....................................................................................... 251Podstawowe metody klas Repository .......................................................................... 252

Metoda find() ........................................................................................................ 252Metoda findAll() ................................................................................................... 253Metoda findBy() .................................................................................................... 253Metoda findOneBy() ............................................................................................. 254Metoda findByX() ................................................................................................. 254Metoda findOneByX() .......................................................................................... 255

Nadpisywanie metod klasy Entity ............................................................................... 255Metoda __toString() klasy Entity .......................................................................... 255Metoda fromArray () klasy Entity ......................................................................... 256

Nadpisywanie metod klasy Repository ....................................................................... 256Przyk�ad 19.1. Tatry .................................................................................................... 257

ROZWI�ZANIE ................................................................................................... 257

Rozdzia� 20. Podsumowanie cz��ci IV ............................................................. 265

Spis tre�ci 7

Cz��� V Zachowania Doctrine ................................................. 267

Rozdzia� 21. Instalacja i konfiguracja rozszerze� DoctrineExtensions ................ 269Przyk�ad 21.1. Przygotowanie dystrybucji symfony2-customized-v3

zawieraj�cej pakiet StofDoctrineExtensionsBundle .................................................. 270ROZWI�ZANIE ................................................................................................... 270

Rozdzia� 22. Zachowanie sluggable ................................................................. 275Identyfikatory slug ...................................................................................................... 275Automatyczne generowanie identyfikatorów slug w Symfony 2 ................................ 276Przyk�ad 22.1. Wyrazy — test zachowania sluggable ................................................. 277

ROZWI�ZANIE ................................................................................................... 277Parametry adnotacji konfiguruj�cych warto�ci slug .................................................... 280

Rozdzia� 23. Zachowanie timestampable ......................................................... 281Przyk�ad 23.1. Wyrazy — test zachowania timestampable ......................................... 282

ROZWI�ZANIE ................................................................................................... 282

Rozdzia� 24. Zachowanie translatable ............................................................. 283Wstawianie t�umacze do bazy danych ....................................................................... 284Odczytywanie t�umacze ............................................................................................ 286Przyk�ad 24.1. Kolory — test zachowania timestampable .......................................... 286

ROZWI�ZANIE ................................................................................................... 287

Rozdzia� 25. Podsumowanie cz��ci V .............................................................. 293

Cz��� VI Szczegó�owe dane rekordu .......................................... 295

Rozdzia� 26. Akcja show ................................................................................. 297Adresy URL zawieraj�ce zmienne .............................................................................. 297

Konwersja wej�ciowa ............................................................................................ 298Konwersja wyj�ciowa ........................................................................................... 298

Wyszukiwanie pojedynczego rekordu na podstawie klucza g�ównego ....................... 298Wy�wietlanie w�a�ciwo�ci rekordu ............................................................................. 299Przyk�ad 26.1. Piosenki wojskowe .............................................................................. 299

ROZWI�ZANIE ................................................................................................... 300

Rozdzia� 27. Identyfikacja rekordu na podstawie warto�ci slug ........................ 307Przyk�ad 27.1. Piosenki wojskowe — u�ycie identyfikatorów slug ............................ 308

ROZWI�ZANIE ................................................................................................... 308

Rozdzia� 28. Generowanie menu na podstawie zawarto�ci bazy danych ............ 311Przyk�ad 28.1. Treny ................................................................................................... 311

ROZWI�ZANIE ................................................................................................... 312

Rozdzia� 29. Udost�pnianie plików binarnych ................................................... 319Przyk�ad 29.1. Download — pliki zapisane w bazie danych ....................................... 320

ROZWI�ZANIE ................................................................................................... 320Przyk�ad 29.2. Download — pliki pobierane z folderu ............................................... 325

ROZWI�ZANIE ................................................................................................... 325

Rozdzia� 30. Podsumowanie cz��ci VI ............................................................. 327

8 Symfony 2 od podstaw

Cz��� VII Relacje ...................................................................... 329

Rozdzia� 31. Relacje 1:1 ................................................................................. 331Klucze obce o warto�ci NULL .................................................................................... 332U�ycie relacji 1:1 w Symfony 2 .................................................................................. 332Operowanie rekordami powi�zanymi relacj� .............................................................. 334

Tworzenie rekordów ............................................................................................. 334Rekord zale�ny ...................................................................................................... 335

Przyk�ad 31.1. Dane u�ytkowników ............................................................................ 335ROZWI�ZANIE ................................................................................................... 335

Akcje referencyjne SQL .............................................................................................. 338Programowe akcje referencyjne Doctrine 2.1 .............................................................. 339

Parametr cascade ................................................................................................... 339Parametr orphanRemoval ...................................................................................... 340

Relacje jednokierunkowe i dwukierunkowe ................................................................ 340Synchronizacja obiektów z baz� danych ........................................................................ 342

Rozdzia� 32. Relacje 1:n (jeden do wielu) ........................................................ 345Klucze obce o warto�ci NULL .................................................................................... 346U�ycie relacji 1:n w Symfony 2 .................................................................................. 346W�a�ciciel relacji 1:n ................................................................................................... 349Operowanie rekordami powi�zanymi relacj� .............................................................. 349

Tworzenie rekordów ............................................................................................. 349Rekordy zale�ne .................................................................................................... 350Rekord nadrz�dny ................................................................................................. 351

Synchronizacja relacji ................................................................................................. 351Akcje referencyjne ...................................................................................................... 352

Akcje SQL-owe ..................................................................................................... 352Akcje Doctrine ...................................................................................................... 352

Przyk�ad 32.1. Kontynent i pastwa ............................................................................ 353ROZWI�ZANIE ................................................................................................... 353

Porz�dkowanie rekordów ............................................................................................ 357

Rozdzia� 33. Relacje n:m (wiele do wielu) ........................................................ 359U�ycie relacji n:m w Symfony 2 ................................................................................. 360W�a�ciciel relacji n:m .................................................................................................. 361Tabela ��cz�ca relacji n:m ........................................................................................... 362Operowanie rekordami powi�zanymi relacj� .............................................................. 362

Tworzenie rekordów ............................................................................................. 362Rekordy zale�ne .................................................................................................... 363Synchronizacja relacji ........................................................................................... 364Usuwanie powi�zania relacyjnego ........................................................................ 364

Akcje referencyjne SQL .............................................................................................. 365Akcje SQL-owe ..................................................................................................... 365

Przyk�ad 33.1. Filmy i aktorzy .................................................................................... 365ROZWI�ZANIE ................................................................................................... 365

Porz�dkowanie rekordów ............................................................................................ 370

Rozdzia� 34. Relacje, akcje index i show oraz widoki cz��ciowe ....................... 373Przyk�ad 34.1. Kontynenty/Pastwa — akcje show i widoki cz��ciowe ..................... 375Przyk�ad 34.2. Filmy/Aktorzy — akcje show i widoki cz��ciowe .............................. 376Przyk�ad 34.3. Powie�ci Agaty Christie ...................................................................... 376

ROZWI�ZANIE ................................................................................................... 377

Spis tre�ci 9

Rozdzia� 35. Podsumowanie cz��ci VII ............................................................ 385

Cz��� VIII Panele CRUD i zabezpieczanie dost�pu do aplikacji .... 387

Rozdzia� 36. Generowanie paneli administracyjnych CRUD ............................... 389Adresy URL akcji CRUD ..................................................................................... 391

Ponowne generowanie paneli CRUD .......................................................................... 394Panele CRUD a relacje ................................................................................................ 394Przyk�ad 36.1. Imiona — panel CRUD ....................................................................... 394

ROZWI�ZANIE ................................................................................................... 395Przyk�ad 36.2. Panel CRUD i relacja 1:1 .................................................................... 396

ROZWI�ZANIE ................................................................................................... 396Przyk�ad 36.3. Panel CRUD i relacja 1:n .................................................................... 399

ROZWI�ZANIE ................................................................................................... 399Przyk�ad 36.4. Panel CRUD i relacja n:m ...................................................................... 401

ROZWI�ZANIE ................................................................................................... 401

Rozdzia� 37. Instalacja pakietu FOSUserBundle ............................................... 403Przyk�ad 37.1. Przygotowanie dystrybucji symfony2-customized-v4

zawieraj�cej pakiet FOSUserBundle ......................................................................... 403ROZWI�ZANIE ................................................................................................... 403

Tworzenie kont i nadawanie uprawnie ...................................................................... 408Tworzenie kont ..................................................................................................... 409Aktywacja i deaktywacja konta ............................................................................. 409Nadawanie i usuwanie uprawnie administracyjnych ........................................... 409

Przyk�ad 37.2. Sprawdzenie dzia�ania dystrybucji symfony2-customized-v4 ............. 410ROZWI�ZANIE ................................................................................................... 410

Rozdzia� 38. Aplikacja dost�pna wy��cznie dla zdefiniowanych u�ytkowników ...... 415Uprawnienia dost�pu ................................................................................................... 415Role u�ytkowników ..................................................................................................... 416Nadawanie, usuwanie i sprawdzanie uprawnie u�ytkownikom ................................. 417Przyk�ad 38.1. Korona ziemi ....................................................................................... 419

ROZWI�ZANIE ................................................................................................... 420Hierarchia ról .............................................................................................................. 427

Rozdzia� 39. Aplikacja dost�pna publicznie w trybie do odczytu ........................ 429Przyk�ad 39.1. Korona ziemi — podzia� na frontend oraz backend ............................ 429

ROZWI�ZANIE ................................................................................................... 430Przekierowania ............................................................................................................ 432Osadzanie formularza do logowania na stronie g�ównej ............................................. 434Przyk�ad 39.2. Korona ziemi — osadzenie formularza do logowania w pliku

base.html.twig ........................................................................................................... 435ROZWI�ZANIE ................................................................................................... 435

Rozdzia� 40. Rejestracja u�ytkowników i odzyskiwanie has�a ........................... 439Przyk�ad 40.1. Kontynenty/pastwa — frontend i backend ........................................ 439

ROZWI�ZANIE ................................................................................................... 439Przyk�ad 40.2. Kontynenty/pastwa — rejestracja u�ytkowników ............................. 442

ROZWI�ZANIE ................................................................................................... 442Przyk�ad 40.3. Kontynenty/pastwa — odzyskiwanie has�a ....................................... 444

ROZWI�ZANIE ................................................................................................... 444

Rozdzia� 41. Podsumowanie cz��ci VIII ........................................................... 447

10 Symfony 2 od podstaw

Cz��� IX Panele administracyjne Sonata ................................... 449

Rozdzia� 42. Instalacja pakietów Sonata .............................................................. 451Przyk�ad 42.1. Przygotowanie dystrybucji symfony2-customized-v5

zawieraj�cej pakiet SonataAdminBundle .................................................................. 451ROZWI�ZANIE ................................................................................................... 452Krok 1. Wypakuj dystrybucj� Symfony 2.0.X without vendors ............................ 452Krok 2. Zmodyfikuj plik deps ............................................................................... 452Krok 3. Pobierz pakiety ......................................................................................... 453Krok 4. Usu foldery .git ...................................................................................... 453Krok 5. Zarejestruj przestrzenie nazw ................................................................... 453Krok 6. Zarejestruj pakiety .................................................................................... 454Krok 7. Zmodyfikuj konfiguracj� projektu ........................................................... 454Krok 8. Zmodyfikuj zabezpieczenia projektu ....................................................... 455Krok 9. Utwórz pakiet Application/Sonata/UserBundle ....................................... 457Krok 10. Zmodyfikuj regu�y routingu ................................................................... 457Krok 11. Zainstaluj style CSS oraz ikony ............................................................. 458Krok 12. Skompresuj otrzyman� dystrybucj� ....................................................... 458

Przyk�ad 42.2. Sprawd� dzia�anie dystrybucji symfony2-customized-v5 ................... 458ROZWI�ZANIE ................................................................................................... 459Krok 1. Wypakuj dystrybucj� i skonfiguruj baz� danych ..................................... 459Krok 2. Utwórz tabele w bazie danych ................................................................. 459Krok 3. Utwórz konto administratora .................................................................... 459Krok 4. Sprawd� wygl�d panelu administracyjnego ............................................. 459

Rozdzia� 43. U�ycie paneli administracyjnych Sonata do w�asnych tabel ............. 461Przyk�ad 43.1. Miasta .................................................................................................. 461

ROZWI�ZANIE ................................................................................................... 462Krok 1. Wypakuj dystrybucj� i skonfiguruj baz� danych ..................................... 462Krok 2. Utwórz pakiet My/Frontend ..................................................................... 462Krok 3. Utwórz klas� CityAdmin .......................................................................... 462Krok 4. W��cz panel administracyjny do zarz�dzania rekordami City .................. 463Krok 5. Przygotuj plik zawieraj�cy t�umaczenia ................................................... 464Krok 6. Sprawd� wygl�d panelu administracyjnego do edycji miast .................... 464

Rozdzia� 44. Podsumowanie cz��ci IX ............................................................. 467Przyk�ad 44.1. Przygotowanie dystrybucji symfony2-customized-v6

zawieraj�cej omówione pakiety ................................................................................ 467Przyk�ad 44.2. Rzeki: aplikacja z panelem Sonata ...................................................... 468

ROZWI�ZANIE ................................................................................................... 468Krok 1. Po��cz przyk�ad 18. z dystrybucj� symfony2-customized-v6.zip ............. 468Krok 2. Wykonaj panel Sonata ............................................................................. 469

Przyk�ad 44.3. Kontynenty: aplikacja z panelem Sonata ............................................. 469ROZWI�ZANIE ................................................................................................... 469

Przyk�ad 44.4. Filmy: aplikacja z panelem Sonata ...................................................... 470Przyk�ad 44.5. Powie�ci Agaty Christie: aplikacja z panelem Sonata ......................... 470

Dodatki ..................................................................... 471

Dodatek A Instalacja oprogramowania .......................................................... 4731. XAMPP ................................................................................................................... 4732. Modyfikacja konfiguracji PHP ................................................................................ 4753. Modyfikacja pakietu PEAR ..................................................................................... 4764. Uaktualnienie biblioteki PEAR ............................................................................... 476

Spis tre�ci 11

5. Code Sniffer ............................................................................................................ 4776. phpDocumentor ....................................................................................................... 4777. PHPUnit .................................................................................................................. 4778. Cygwin .................................................................................................................... 4789. �cie�ki dost�pu ........................................................................................................ 48010. GraphViz ............................................................................................................... 48211. NetBeans ............................................................................................................... 482

Skorowidz ................................................................................... 483

12 Symfony 2 od podstaw

Rozdzia� 43.

U�ycie paneliadministracyjnych Sonatado w�asnych tabel

Panel administracyjny przedstawiony na rysunku 42.2 umo�liwia� zarz�dzanie rekordamitabel:

fos_user_groupfos_user_userfos_user_user_group

Teraz zajmiemy si� dostosowaniem paneli w taki sposób, by umo�liwia�y edycj� rekor-dów z dowolnej tabeli, dla której jest dost�pna klasa Entity.

Przyk�ad 43.1. MiastaWykonaj witryn�, która b�dzie prezentowa�a dane dotycz�ce miast:

� nazw� miasta,

� populacj�.

Witryn� wykonaj w taki sposób, by po odwiedzeniu adresu:.../web/

wy�wietlane by�o zestawienie informacji o wszystkich miastach. Dane na stronie .../web/maj� by dost�pne w trybie do odczytu dla wszystkich odwiedzaj�cych ten adres.

Ponadto pod adresem:.../web/admin/dashboard

462 Cz��� IX � Panele administracyjne Sonata

wykonaj panel administracyjny pozwalaj�cy na edycj� informacji o miastach. Panel tenma by dost�pny wy��cznie po zalogowaniu na konto:

U�ytkownik: adminHas�o: password

Wykorzystaj wykonan� w poprzednim rozdziale dystrybucj� symfony2-customized-v5.zip.

ROZWIZANIE

Krok 1. Wypakuj dystrybucj� i skonfiguruj baz� danych

Utwórz baz� danych o nazwie cities oraz konto dost�pu do bazy editor zabezpieczonehas�em secretPASSWORD. Nast�pnie wypakuj archiwum symfony2-customized-v5.zip, poczym w pliku app/config/parameters.ini wprowad� dane dost�pu do bazy danych cities.

Krok 2. Utwórz pakiet My/Frontend

Analogicznie jak w przyk�adzie z rozdzia�u 18. wykonaj pakiet My/Frontend. W pakiecietym ma si� znajdowa jedna klasa Entity o nazwie City. W klasie City utwórz dwiew�a�ciwo�ci:

� name — typu string o d�ugo�ci 255 znaków;

� population — typu integer.

Wykonaj kontroler oraz skonfiguruj routing w taki sposób, by po odwiedzeniu strony:.../web/

wy�wietlane by�o zestawienie wszystkich rekordów z tabeli city. W przyk�adzie tym niewykonuj fikstur — wype�nianie bazy wykonamy, wykorzystuj�c panel administracyjny.

Krok 3. Utwórz klas� CityAdmin

W folderze My/FrontendBundle/Admin utwórz plik CityAdmin.php zawieraj�cy klas�przedstawion� na listingu 43.1. Klasa ta konfiguruje panel administracyjny do zarz�-dzania rekordami z tabeli city.

Listing 43.1. Klasa My/FrontendBundle/Admin/CityAdmin.php

<?php

namespace My\FrontendBundle\Admin;

use Sonata\AdminBundle\Admin\Admin;use Sonata\AdminBundle\Datagrid\ListMapper;use Sonata\AdminBundle\Datagrid\DatagridMapper;use Sonata\AdminBundle\Validator\ErrorElement;

Rozdzia� 43. � U�ycie paneli administracyjnych Sonata do w�asnych tabel 463

use Sonata\AdminBundle\Form\FormMapper;

class CityAdmin extends Admin{ protected function configureFormFields(FormMapper $formMapper) { $formMapper ->add('name') ->add('population', 'number') ; }

protected function configureDatagridFilters(DatagridMapper $datagridMapper) { $datagridMapper ->add('name') ; }

protected function configureListFields(ListMapper $listMapper) { $listMapper ->addIdentifier('name') ->add('population', 'number') ; }

}

Krok 4. W��cz panel administracyjnydo zarz�dzania rekordami City

Utwórz plik My/FrontendBundle/Resources/config/services.xml, o zawarto�ci takiej jakna listingu 43.2.

Listing 43.2. Plik My/FrontendBundle/Resources/config/services.xml

<?xml version="1.0" ?>

<container xmlns="http://symfony.com/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symfony.com/schema/dic/serviceshttp://symfony.com/schema/dic/services/services-1.0.xsd">

<services> <service id="sonata.admin.city" class="My\FrontendBundle\Admin\CityAdmin"> <tag name="sonata.admin" manager_type="orm" group="Dane" label="Miasta"/> <argument /> <argument>My\FrontendBundle\Entity\City</argument> <argument>SonataAdminBundle:CRUD</argument> <call method="setTranslationDomain"> <argument>MyFrontendBundle</argument> </call>

464 Cz��� IX � Panele administracyjne Sonata

</service> </services>

</container>

Krok 5. Przygotuj plik zawieraj�cy t�umaczenia

Utwórz plik My/FrontendBundle/Resources/translations/MyFrontendBundle.pl.xliff,o zawarto�ci takiej jak na listingu 43.3.

Listing 43.3. Plik My/FrontendBundle/Resources/translations/MyFrontendBundle.pl.xliff

<?xml version="1.0"?><xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2"> <file source-language="en" datatype="plaintext" original="" > <body> <trans-unit id="1"> <source>Dashboard</source> <target>Pulpit</target> </trans-unit> <trans-unit id="2"> <source>Name</source> <target>Nazwa</target> </trans-unit> <trans-unit id="3"> <source>Population</source> <target>Populacja</target> </trans-unit> <trans-unit id="4"> <source>City List</source> <target>Lista miast</target> </trans-unit> <trans-unit id="5"> <source>City Edit</source> <target>Edytuj miasto</target> </trans-unit> <trans-unit id="6"> <source>City Delete</source> <target>Usu� miasto</target> </trans-unit> </body> </file></xliff>

Krok 6. Sprawd wygl�d panelu administracyjnegodo edycji miast

Po odwiedzeniu adresu:.../web/admin/washboard

i zalogowaniu na konto administratora ujrzysz panel przedstawiony na rysunku 43.1.

Rozdzia� 43. � U�ycie paneli administracyjnych Sonata do w�asnych tabel 465

Rysunek 43.1. Panel administracyjny do zarz�dzania rekordami z tabeli city

Menu wskazane strza�k� jest zdefiniowane wpisami:<tag name="sonata.admin" manager_type="orm" group="Dane" label="Miasta"/>

z listingu 43.2. T�umaczenia, m.in.:Lista miastPopulacja

powstaj� natomiast na podstawie wpisów z listingu 43.3:<trans-unit id="3"> <source>Population</source> <target>Populacja</target></trans-unit><trans-unit id="4"> <source>City List</source> <target>Lista miast</target></trans-unit>

466 Cz��� IX � Panele administracyjne Sonata

SkorowidzA

adnotacja@Gedmo\Translatable, 284, 286@ORM\Column, 238, 239@ORM\Entity, 301@ORM\JoinColumn, 339@ORM\JoinTable, 362@ORM\ManyToOne, 347@ORM\OneToMany, 347@ORM\OneToOne, 333, 340@ORM\OrderBy, 358@Route, 35, 68, 104, 125, 298,

391@Table, 235, 238@Template, 35, 114, 323

adresdo akcji, 431login, 431login_check, 431logout, 431URL, 68, 297, 391

adresy slug, 470akcelerator APC, 22akcja, action, 25

create, 391, 393dataAction(), 130delete, 391, 394dolorAction(), 118edit, 391, 393index, 102, 231, 390indexAction(), 126ipsumAction(), 124loremAction(), 118, 297menuAction(), 200, 316new, 391, 393Novel/index, 383referencyjna

cascade, 339Doctrine, 339ON DELETE CASCADE, 338

sAction(), 126show, 297, 304, 327, 373, 390

sitAction(), 118update, 391, 393

akcjeDoctrine, 352kontrolera DefaultController,

322referencyjne, referential actions,

338, 352referencyjne SQL, 365SQL-owe, 352

aktualizacja, ON UPDATE, 338aktywacja konta, 409analiza odpowiedzi HTTP, 127Apache, 473aplikacja

ACME demo, 101dost�pna publicznie, 429

atak typuCross Site Request Forger, 132Cross Site Scripting, 132

automatyczne �adowanie klas, 212, 215autoryzacja, 407

Bbackend, 439baza danych, 222

achristie, 377cities, 462colors, 287download, 320filmy, 366kontynenty, 353koronaziemi, 420mountains, 258names, 222, 228rivers, 244, 245songs, 301treny, 312users, 335

bibliotekaDoctrine 2.1, 265DoctrineExtensions, 269, 273, 293ORM Doctrine 2.1, 234

PEAR, 476swiftmailer, 19Twig, 111, 119

biblioteki ORM, 269blokowanie dost�pu do plików, 95b��d, 20–22

403, 444404, 83, 104

Ccachowanie, 127ci�gi slug, 275ci�gi znaków, 140

Ddefiniowanie

adresu, 102akcji referencyjnej, 339relacji 1:n, 347zmiennych, 144

deklaracja przestrzeni nazewniczej,42

DETACHED, 241Doctrine 2.1, 339dodawanie pakietu, 209, 212, 214dokumentacja Doctrine 2, 235domena

projektu, 96wirtualna, 94

dost�p doaplikacji, 421bazy danych, 258rekordów, 234tabeli, 236

dwukierunkowa relacja1:n, 354n:m, 366

dwukropki, 60dystrybucja

Symfony 2.0, 17, 217symfony2-customized-v6.zip, 467

484 Symfony 2 od podstaw

dystrybucjawith vendors, 17, 23, 101without vendors, 17, 23, 44

dziedziczenie, 175

Eetykiety formularza, 395

Ffikstur, fixtures, 212filtr

escape, 133keys, 149nl2br, 212truncate, 212wordwrap, 212

filtry, filters, 169Twig, 181

folderapp, 18bin, 18bundles, 48cache, 20css, 48doc, 32Entity, 234, 252js, 48mylake, 56public, 32public_html, 98src, 18Symfony, 21tatras, 53translations, 32vendor, 17, 18, 210web, 19views, 60

folder zawieraj�cy projekt, 211foldery .git, 214format

konfiguracji pakietu, 44PHP, 46XML, 45YAML, 45

formularz, 395logowania, 424, 433, 437, 440rejestracyjny, 442

formularze edycyjne, 397frontend, 439funkcja

array_shift(), 314asset(), 47, 63base64_decode(), 320base64_encode(), 320basename(), 314, 321extends, 60file_get_contents(), 321finfo_file(), 321htmlspecialchars(), 132

menuAction(), 201parent(), 177path(), 68, 191showAction(), 188shuffle(), 313str_replace(), 314

funkcje, functions, 169konwertuj�ce dane, 319Twig, 184

Ggenerowanie

b��dów, 92identyfikatorów slug, 276, 277klasy dost�pu, 245, 258menu, 311paneli CRUD, 394panelu administracyjnego, 390

Hhas�o dost�pu do serwera, 100hierarchia ról, 427

Iidentyfikator slug, 275, 308, 379instalacja

biblioteki, 270oprogramowania, 473pakietów Sonata, 452pakietu FOSUserBundle, 403programu

curl, 479git, 479openssh, 479rsync, 478

instrukcja, 137{ % raw %}, 120{% block %}, 120{% extends %}, 120{% set %}, 144{{ }}, 121, 132, 137for, 147if, 148, 150namespace, 43use, 43, 243

Kkaskadowo� operacji zapisu, 398klasa

Aktor, 366AuthenticatedVoter, 417CityAdmin, 462Color, 284, 288Detective, 378Dolor, 234Entity, 240, 299EntityManager., 240

File.php, 325Film, 366formularza, 397Lorem.php, 237LoremRepository, 252Method, 379MountainRepository, 259Name, 392Name.php, 226NameController, 391Novel, 378, 379odwrotna relacji, inverse side,

342, 361, 385Profil, 341Repository, 379ResponseHeaderBag, 125River.php, 245RiverAdmin.php, 469Sit, 26Song, 301SongRepository, 301TrenRepository, 312User, 341UserType, 398Word, 278

klasydost�pu do bazy danych, 234, 236Entity, 251Repository, 251

kluczg�ówny, 285obcy, foreign key, 331, 345obcy o warto�ci NULL, 332, 346

kodakcji index, 230, 248, 261, 290,

303, 337akcji show, 304, 310menu, 310SQL, 223

kodowanie, 477kodowanie znaków utf8, 223kolory RGB, 164komenda find, 211komenda rm, 211kompresowanie folderu, 216komunikat Zaloguj, 424konfiguracja

identyfikatorów slug, 280konta pocztowego, 444routingu, 45zabezpiecze, 406zachowa, 270

konfigurowaniepakietu, 217PHP, 475

konsola bash, 271konto administratora, 411, 458konto dost�pu

do aplikacji, 422do bazy, 462pocztowe, 444

Skorowidz 485

kontroler, controller, 25, 27Aktor, 369app.php, 40app_dev.php, 40BramaController, 74DefaultController, 35Film, 368Kontynent, 355LoremController, 67MountainController, 421Novel, 381Panstwo, 356WiezaController, 74ZamekController, 74

konwersjawej�ciowa, 298wyj�ciowa, 298

konwertowanie znaków, 132kopiowanie zasobów, 103

L, �layout, 57liczby, 140lista

aktorów, 376filmów, 376hiper��czy, 373kontynentów, 375pastw, 375znaczników, 170

localhost, 105logiczne nazwy

kontrolerów, 227modeli, 227widoków, 227

logowanie, 424�adowanie pakietów, 217

Mmakrodefinicja

autolink, 171str, 172

MANAGED, 241metoda

__toString(), 255, 299, 469addFilm(), 362, 364addPanstwo(), 349createNotFoundException(), 189dataAction(), 131detach(), 242dolorAction(), 114, 115find(), 252findAll(), 242, 253, 256, 316findBy(), 253findByX(), 254findOneBy(), 254findOneBySlug(), 307findOneByX(), 255flush(), 241

fromArray (), 256get(), 227, 237getAktorzy(), 363getAll(), 243getContents(), 325getFilmy(), 363getId(), 237getIpsum(), 237getKontynent(), 351getLength(), 246getPanstwa(), 350getProfil(), 335getSlug(), 276godzinaAction(), 131indexAction(), 35, 122, 125,

199, 229, 290menuAction(), 201persist(), 241, 242refresh(), 286remove(), 242, 243removeElement(), 364render(), 116, 124set(), 124, 227, 237setContents(), 325setIpsum(), 237setKontynent(), 349setLength(), 246setSlug(), 276setTranslatableLocale(),

283–286setUser(), 343showAction(), 187, 199

metody klasyKontynent, 347Panstwo, 348Repository, 252User, 333

modelDetective, 376Method, 377MyFrontendBundle:File, 320MyBackendBundle:Mountain,

420MyFrontendBundle:Name, 390Novel, 376

modyfikacja konfiguracji projektu,272

modyfikowanienag�ówków, 124pakietu PEAR, 476przekierowa, 442zabezpiecze, 455

MySQL, 223, 473

Nnadawanie uprawnie, 408nadpisywanie

metod, 255, 256widoków, 91, 113zawarto�ci bloków, 177

nag�ówek Content-Type, 125narz�dzie rsync, 97nawiasy okr�g�e, 143nazwa logiczna widoku, 111, 114nazwy skrócone, 44nazwy widoków akcji, 114NEW, 241numer portu 40022, 99

Oobiekt

$entity, 299Entity, 241

odwo�ania do plików graficznych, 63odzyskiwanie has�a, 444operacja

create, 389delete/destroy, 389read/retrieve, 389update, 389

operator is, 143operatory

arytmetyczne, 141logiczne, 142porównania, 141specjalne, 142

oprogramowanieORM, 19PHPUnit, 477

osadzanie formularza, 434, 435

Ppakiet, bundle, 25

Acme, 106BackendBundle, 440Code Sniffer, 477Cygwin, 478demo, 49DoctrineExtensionsBundle, 27,

276DoctrineFixturesBundle, 26, 215DoctrineMigrationsBundle, 27FOSCommentBundle, 27FOSUserBundle, 27, 447FrontendBundle, 430, 440KnpMarkdownBundle, 26KnpPaginatorBundle, 26LoremBundle, 79My/AnimalsBundle, 86My/FraszkaBundle, 69My/Frontend, 462My/FrontendBundle, 257, 440My/HelloworldBundle, 29My/LakeBundle, 54My/MultiplicationBundle, 157My/NovelBundle, 198My/PoemBundle, 61MyHelloworldBundle, 34PEAR, 476

486 Symfony 2 od podstaw

pakiet, bundlephpDocumentor, 477rsync, 478SonataAdminBundle, 27, 451SonataPageBundle, 27StofDoctrineExtensionsBundle,

270–272, 293symfony2-customized-v1.zip, 106symfony2-customized-v2.zip, 212UserBundle, 457valley, 50XAMPP, 473zabytek, 74

pakietydo przetwarzania plików, 212komunikacyjne, 319Sonata, 451Symfony 2, 209, 218

pami� podr�czna, cache, 127, 425panel administracyjny, 459, 461, 463

CRUD, 389, 394–396, 420, 430XAMPP, 474

panel Sonata, 469parametr

$culture, 290cascade, 339layout.login, 424nullable, 333, 348orphanRemoval, 340path, 415repositoryClass, 251role, 416

pasek narz�dzideveloperskich, 37Web Debug Toolbar, 39

p�tla{% for %}, 150, 201for, 292

PHP, 473plik

00index.log, 197app.php, 19, 40app_dev.php, 19, 40AppKernel.php, 32, 40, 271,

453, 457autoload.php, 215, 271, 453base.html.twig, 195, 212, 432,

436, 441BramaController.php, 74Color.php, 288config.yml, 192, 272, 407config.php, 19config_prod.yml, 41Controller.php, 37CSS, 203dedykacja.txt, 311DefaultController.php, 34, 40, 61,

70, 86, 117, 131, 135, 152,155, 158

deps, 210, 270deps.lock, 210

dogoscia.html.twig, 71error.html.twig, 84, 85error404.html.twig, 85, 88error500.html.twig, 85filmy.xml, 365FOSUserBundle.pl.yml, 424imiona.txt, 221index.html.twig, 40, 316ipsum.txt.twig, 124jada-jada-misie.txt, 185Kernel.php, 32kolory.yml, 286KontynentAdmin.php, 469kontynenty.xml,, 353korona-ziemi.txt, 151layout.html, 58layout.html.twig, 59, 311LoadData.php, 247, 260, 279,

288, 302, 313, 321, 336, 354,367, 380

LoremController.php, 67menu.html.twig, 201, 317Mountain.php, 259mountains.xml, 257MyFrontendBundle.pl.xliff, 464Name.php, 389PanstwoAdmin.php, 469parameters.ini, 227, 233, 244, 258php.ini, 98ProfilType.php, 397properties.ini, 410rivers.yml, 243routing.yml, 33, 69, 289, 407, 431routing_dev.yml, 40rsync_exclude.txt, 99rsync-production.bat, 98schema.yml, 235security.yml, 406, 415, 423, 455services.xml, 463show.html.twig, 316Sit.php, 26songs.yml, 299style.css, 85Symfony_Standard_2.0.x.zip, 17Symfony_Standard_Vendors_

2.0.X.zip, 17, 18, 28, 53tekst.html, 58tworzenie-pustej-bazy-

danych.bat, 223tworzenie-pustej-bazy-

danych.sql, 244users.xml, 335WiezaController.php, 74Word.php, 278ZamekController.php, 74zawieraj�cy t�umaczenia, 464

pliki.htaccess, 31, 95.twig, 127deps, 210deps.lock, 210

hosts, 94z trenami, 312

pobieraniepakietów, 211, 214, 271rekordów, 243Symfony 2, 213

podzia� uprawnie, 429podzia� widoków, 195, 198polecenia modyfikuj�ce plik, 476polecenie

deny from all, 31generate:bundle, 31, 42, 102rsync, 98

po��czenie z baz� danych, 227, 258powi�zanie tabel relacj� 1:1, 332priorytet operatorów, 143program

GraphViz, 482instalacyjny, 473NetBeans, 482phpMyAdmin, 224

projekt Sonata, 451, 457protokó� SSH, 99przedrostek ROLE_, 416przekazywanie danych, 130przekazywanie do widoku

obiektów, 139tablic, 138

przekierowanie, 432prze�adowanie uprawnie, 223przestrze nazewnicza

Gedmo, 271Stof, 271

przestrze nazw, namespace, 25przetwarzanie widoków, 111przyk�ad

bezpieczna paleta kolorów, 163dane u�ytkowników, 335data i godzina, 130Dolina Pi�ciu Stawów Polskich,

53download, 320, 325Dwa kabele, 60dzia�anie dystrybucji, 458dzie�a literatury �wiatowej, 155filmy, 470filmy i aktorzy, 365Fraszki, 69gady, 86, 93, 95, 97Hello, world!, 28imiona, 221, 394kolory, 286kontynent i pastwa, 353kontynenty, 469kontynenty/pastwa, 375, 439,

442, 444korona ziemi, 151, 419, 429, 435miasta, 461opowiadania Edgara Allana Poe,

197panel CRUD, 396, 401piosenki

Skorowidz 487

dla dzieci, 77dzieci�ce, 185wojskowe, 299, 308

powie�ci Agaty Christie, 376,470

przygotowanie dystrybucji, 212,270, 451, 467

Pusta Dolinka, 49rzeki, 243, 468sprawdzenie dzia�ania

dystrybucji, 410tabela pot�g, 161tabliczka mno�enia, 157Tatry, 257treny, 311wyrazy, 277, 282zabezpieczanie zmiennych, 134zabytki Lublina, 72

publikowanie projektu, 105

Rregu�a

@Template(), 115konfiguracyjna autoescape, 133translacji adresu, 289w��czaj�ca adres, 81

regu�y routingu, 34, 422, 437, 457rejestracja

pakietu, 212, 215, 271, 453przestrzeni nazw, 271, 453u�ytkownika, 439, 442

rekordnadrz�dny, 351zale�ny, 335, 350, 363

relacja1:1, 331, 3361:n, 345, 378, 399dwukierunkowa, bidirectional,

340jednokierunkowa,

unidirectional, 340n:m, 359, 361, 379, 401

REMOVED, 241rola

IS_AUTHENTICATED_ANONYMOUSLY, 416, 417

ROLE_SUPER_ADMIN, 417role u�ytkowników, 416routing, 104rozszerzanie

funkcjonalno�ci modelu, 312.html.twig, 28.twig, 119DoctrineExtensions, 308DoctrineFixturesBundle, 222podwójne .html.twig, 112, 123

S, �serializacja, 418serwer

Apache, 22hostingowy, 93, 319Light Hosting, 97MySQL, 223, 319NetArt, 95wirtualny

regu�y konfiguruj�ce, 94skórka, 248, 260, 302, 314, 356,

369, 384skrypt

app.php, 19, 23app_dev.php, 19, 23autoload.php, 212, 215config.php, 19, 23, 101rsync-production.bat, 99, 100tworzenie-pustej-bazy-

danych.sh, 223s�owo kluczowe DEFAULT, 240sortowanie

rekordów, 313, 358, 370tekstów, 223

SQL, 223, 240stan

DETACHED, 241MANAGED, 241NEW, 241REMOVED, 241

stany obiektu Entity, 241strona b��du 404, 85strona g�ówna, 356strona rejestracji, 446struktura pakietu, 31synchronizacja relacji, 351, 364synchronizowanie obiektów z baz�

danych, 342system szablonów, 19szablon

base.html.twig, 174, 176, 436,440

index.html.twig, 36layout.html.twig, 61, 70, 75, 87,

103menu.html.twig, 201PHP, 206witryny, 57, 432

szablony b��dów, 85�cie�ki prowadz�ce

do pakietu Cygwin, 480do PHP, 480

�rodowiskodeweloperskie, 40produkcyjne, 40, 127

Ttabea profil, 331tabela

aktor, 359, 366docelowa, 331, 345ext_translations, 285file, 320, 325film, 359, 366film_aktor, 366fos_user, 410kontynent, 345, 354��cz�ca relacje, 359��cz�ca relacji n:m, 362mountain, 260name, 225, 228panstwo, 345, 354profil, 336river, 245song, 301, 309tren, 312user, 331, 336word, 279, 282�ród�owa relacji, 331, 345

tabele dodatkowe, 272tabelka hiper��czy, 382tablica, 138

$data, 229$menuData, 200$t, 314menuData, 201

tabliceasocjacyjne, 140indeksowane, 140

terminbackend, 429frontend, 429

t�umaczenie, 284, 414, 464translacja adresu, 289Twig, 111

drukowanie znaczników, 121filtry, 169, 181funkcje, 169, 184instrukcje steruj�ce, 120komentarze, 120komentarze wielowierszowe,

120operatory, 141wyra�enia, 140znaczniki, 121, 169

tworzenieakcji, 65bazy danych, 222, 233kont, 409konta administratora, 458kontrolerów, 67pakietów, 29, 42, 67projektu, 28rekordów, 242, 334, 349, 362tabel, 228, 235

488 Symfony 2 od podstaw

typ blob, 319typ kolumny, 282typ MIME, 321, 325typy danych, 238

Uuk�ad graficzny, 57uprawnienia

do aplikacji, 431do witryny, 431dost�pu, 415konta, 417plików i folderów, 98u�ytkownika, 417

uprawnienieROLE_ADMIN, 427, 439ROLE_USER, 427

uruchamianie projektu, 46ustalanie strony g�ównej, 203usuwanie, ON DELETE, 338

akcji, 66bazy danych, 233kontrolera, 67pakietu, 42, 67, 213pakietu demo, 28powi�zania relacyjnego, 364rekordów, 243uprawnie, 409, 426

u�ytkownikuprawnienia, 417

Wwarto�

logiczna, 140NULL, 239slug, 280, 307

wersja Symfony 2, 213widok, view, 25, 28

akcji, 123akcji index, 249, 261, 291, 303,

316, 337, 355, 369akcji jaszczurka, 88akcji menu, 317akcji show, 304, 316base.html.twig, 178, 190, 196,

201, 248, 260, 302, 423cz��ciowy, 373, 374, 382error403.html.twig, 444error404.html.twig, 89error500.html.twig, 91formularza, 435index.html.twig, 38, 51, 55, 62,

174, 178, 197layout.html.twig, 178, 196, 202,

248, 261, 315lorem.html.twig, 119menu.html.twig, 201powitanie.html.twig, 136

show.html.twig, 191, 202show.txt.twig, 192

w�a�ciciel relacji, owing side, 342,349, 385

1:n, 349n:m, 361

w�a�ciwo�ci rekordu, 299w�a�ciwo�

$caption, 227$id, 227$locale, 283$profil, 332$slug, 276created, 282length, 246name, 284slug, 278updated, 282

w��czanie filtrów, 213w��czenie zachowa timestampable,

281wtyczka

FOSUserBundle, 416Live HTTP Headers, 84

wyj�tek, 334wylogowanie, 423wype�nianie tabeli, 228wyra�enia Twig, 139wyszukiwanie, 368wyszukiwanie rekordu, 298

Zzabezpieczanie zmiennych, 134zabezpieczenia, 406zachowania, behaviours, 269

Doctrine, 293zachowanie

sluggable, 269, 275–278, 308timestampable, 269, 281translatable, 269, 283–284, 292

zalogowany u�ytkownik, 415zasoby zewn�trzne, 47, 103Zend Framework, 27zmienna

$culture, 289$entities, 231$entity, 299$novel, 200$slug, 200$title, 200$tytul, 314ipsum, 130loop, 148loop.first, 149loop.index, 148loop.last, 149slug, 203

zmienneglobalne, 145tablicowe, 138

znacznik, tag, 169{% block %}, 177{% extends %}, 178{% include %}, 385{% render %}, 201{{ }}, 130, 139autoescape, 134, 180block, 175do, 180extends, 173, 175filter, 172flush, 180for, 149, 171from, 171head, 196if, 171import, 171include, 179link, 196macro, 171meta, 196raw, 180render, 181set, 173spaceless, 179use, 178

znaczniki, 169czasu, 282HTML, 111Twig, 121

znak |, 200