E-book details

Symfony 2 od podstaw

Symfony 2 od podstaw

Włodzimierz Gajda

Ebook

Podbij internet z Symfony 2!

  • Bez trudu zbuduj stronę WWW w środowisku Symfony 2
  • Precyzyjnie określ swoje potrzeby i zrealizuj je z pomocą tego środowiska
  • Skutecznie chroń dostęp do aplikacji

Symfony 2 to nowa wersja doskonałego środowiska, pozwalającego tworzyć strony internetowe oraz aplikacje w języku PHP. Ten framework, długo wypatrywany przez rzesze programistów, ma wiele atutów: w pełni wykorzystuje obiektowe możliwości najnowszej wersji języka PHP, jest kompatybilny z innymi bibliotekami PHP, ma modularną budowę, a także zawiera ponad dwadzieścia komponentów, których można używać razem lub oddzielnie. Znakomicie ułatwia też wychwytywanie błędów w tworzonej aplikacji i efektywnie zabezpiecza ją przed dostępem niepowołanych osób.

Zadaniem tej książki jest szybkie i praktyczne wprowadzenie Cię w świat Symfony 2 oraz pokazanie na konkretnych przykładach, jak można wykorzystać jego wspaniałe możliwości. Sprawdź, jak zainstalować aplikację i stworzyć z niej wygodne narzędzie, dołączyć zewnętrzne zasoby, przygotować szablon witryny czy opublikować projekt. Poznaj zmienne, wyrażenia i operatory Twig, instrukcje sterujące, znaczniki, funkcje i filtry. Naucz się pracować z bazą danych, wykorzystywać różne rozszerzenia i relacje, tworzyć aplikacje interaktywne i te przeznaczone wyłącznie do odczytu. Wszystko to masz na wyciągnięcie ręki - przeczytaj i stosuj we własnych projektach!

  • Tworzenie prostych stron WWW
  • Dostosowywanie Symfony 2
  • Praca z bazą danych
  • Doctrine Behaviours
  • Szczegółowe dane rekordu
  • Relacje
  • Panele CRUD i zabezpieczanie dostępu do aplikacji

Poczuj komfort pracy z rewolucyjnym frameworkiem Symfony 2!


Podziękowania (13)

CZĘŚĆ I TWORZENIE PROSTYCH STRON WWW (15)

Rozdział 1. Uruchomienie przykładowego projektu (17)

  • Dystrybucja with vendors - około 6 MB (17)
  • Dystrybucja without vendors - około 200 kB (17)
  • Przykład 1.1. Aplikacja przykładowa (18)
    • ROZWIĄZANIE (18)
  • Podsumowanie (22)

Rozdział 2. Hello, world! (25)

  • Przestrzenie nazw (25)
  • Pakiet (26)
  • Kontroler i akcja (27)
  • Widok (28)
  • Przykład 2.1. Hello, world! (28)
    • ROZWIĄZANIE (28)
  • Zmodyfikowane pliki (39)
  • Środowiska pracy (40)
  • Tworzenie i usuwanie pakietów (42)
  • Użycie przestrzeni nazewniczych (42)
  • Cechy Symfony 2 (44)
    • Formaty konfiguracji (44)
  • Uruchomienie gotowego przykładu (46)

Rozdział 3. Dołączanie zewnętrznych zasobów (47)

  • Przykład 3.1. Pusta Dolinka (49)
    • ROZWIĄZANIE (49)
  • Przykład 3.2. Dolina Pięciu Stawów Polskich (53)
    • ROZWIĄZANIE (53)

Rozdział 4. Szablon witryny (57)

  • Przykład 4.1. Dwa kabele (60)
    • ROZWIĄZANIE (61)

Rozdział 5. Hiperłącza i struktura aplikacji (65)

  • Tworzenie i usuwanie akcji (65)
  • Tworzenie i usuwanie kontrolerów (67)
  • Tworzenie i usuwanie pakietów (67)
  • Definiowanie adresów URL akcji (68)
  • Przykład 5.1. Fraszki (69)
    • ROZWIĄZANIE (69)
  • Przykład 5.2. Zabytki Lublina (72)
    • ROZWIĄZANIE (74)
  • Przykład 5.3. Piosenki dla dzieci (77)
    • ROZWIĄZANIE (78)

Rozdział 6. Błędy 404 (83)

  • Strony błędów w Symfony 2 (84)
  • Przykład 6.1. Gady (86)
    • ROZWIĄZANIE (86)
  • Nadpisywanie widoków dowolnych pakietów (91)
  • Programowe generowanie błędów 404 oraz 500 (92)

Rozdział 7. Publikowanie projektu na serwerze hostingowym (93)

  • Przykład 7.1. Gady - wersja lokalna z własną domeną (93)
    • ROZWIĄZANIE (94)
  • Przykład 7.2. Gady - wersja z serwera firmy NetArt (95)
    • ROZWIĄZANIE (95)
  • Przykład 7.3. Gady - wersja z serwera firmy Light Hosting (97)
    • ROZWIĄZANIE (97)

Rozdział 8. Podsumowanie części I (101)

  • Dystrybucje Symfony 2 (101)
  • Przykładowa aplikacja ACME demo (101)
  • Pierwszy samodzielnie wykonany projekt (102)
  • Zewnętrzne zasoby (103)
  • Szablon witryny (103)
  • Podstawy routingu (104)
  • Błędy 404 (104)
  • Publikowanie projektu (105)
  • Przykład 8.1. Przygotowanie pakietu symfony2-customized-v1.zip (bez przykładu src/Acme) (106)
    • ROZWIĄZANIE (106)

CZĘŚĆ II WIDOKI (109)

Rozdział 9. Twig (111)

  • Logiczne nazwy widoków (111)
  • Nadpisywanie widoków z folderu vendor (113)
  • Nazwy widoków akcji (114)
  • Przykład 9.1. Nazwy logiczne widoków, adnotacja @Template() i metoda render() (116)
    • ROZWIĄZANIE (116)
  • Składnia widoków Twig (119)
  • Wyłączanie interpretacji w szablonie (120)
  • Przykład 9.2. Wyłączanie interpretacji fragmentu szablonu (121)
    • ROZWIĄZANIE (122)
  • Podwójne rozszerzenie .html.twig (123)
    • Modyfikacja nagłówka Content-Type przy użyciu parametru _format (124)
    • Modyfikacja nagłówka Content-Type metodą set() (124)
  • Przykład 9.3. Modyfikacja nagłówka Content-Type (125)
    • ROZWIĄZANIE (125)

Rozdział 10. Zmienne, wyrażenia i operatory Twig (129)

  • Przekazywanie zmiennych do widoku (129)
  • Przykład 10.1. Data i godzina (130)
    • ROZWIĄZANIE (131)
  • Zabezpieczanie zmiennych (132)
  • Przykład 10.2. Zabezpieczanie zmiennych (134)
    • ROZWIĄZANIE (135)
  • Przekazywanie do widoku tablic (138)
  • Przekazywanie do widoku obiektów (139)
  • Wyrażenia Twig (139)
  • Operatory Twig (141)
  • Definiowanie zmiennych wewnątrz widoku (144)
  • Zmienne globalne (145)

Rozdział 11. Instrukcje sterujące for oraz if (147)

  • Instrukcja for (147)
  • Instrukcja if (150)
  • Przykład 11.1. Korona ziemi (151)
    • ROZWIĄZANIE (152)
  • Przykład 11.2. Dzieła literatury światowej (155)
    • ROZWIĄZANIE (155)
  • Przykład 11.3. Tabliczka mnożenia (157)
    • ROZWIĄZANIE (157)
  • Przykład 11.4. Tabela potęg (161)
    • ROZWIĄZANIE (161)
  • Przykład 11.5. Bezpieczna paleta kolorów (163)
    • ROZWIĄZANIE (164)

Rozdział 12. Znaczniki, filtry i funkcje (169)

  • Znaczniki Twig (169)
    • Znaczniki for oraz if (171)
    • Znaczniki macro, from i import (171)
    • Znacznik filter (172)
    • Znacznik set (173)
    • Znacznik extends (173)
    • Znacznik block (175)
    • Znaczniki extends i block oraz dziedziczenie (175)
    • Znacznik use (178)
    • Znacznik include (179)
    • Znacznik spaceless (179)
    • Znacznik autoescape (180)
    • Znacznik raw (180)
    • Znacznik flush (180)
    • Znacznik do (180)
    • Znacznik render (181)
  • Filtry (181)
  • Funkcje (184)
  • Przykład 12.1. Piosenki dziecięce (185)
    • ROZWIĄZANIE (186)

Rozdział 13. Trójstopniowy podział widoków (195)

  • Przykład 13.1. Opowiadania Edgara Allana Poe (197)
    • ROZWIĄZANIE (198)

Rozdział 14. Podsumowanie części II (205)

CZĘŚĆ III DOSTOSOWYWANIE SYMFONY 2 (207)

Rozdział 15. Dodawanie nowych pakietów (209)

  • Lista pakietów zawartych w Symfony (209)
  • Zawartość folderu vendor/ (210)
  • Pobieranie pakietów do folderu vendor/ (211)
  • Dołączanie pakietów do kodu (212)
  • Przykład 15.1. Przygotowanie dystrybucji symfony2-customized-v2 zawierającej pakiet DoctrineFixturesBundle (212)
    • ROZWIĄZANIE (213)

Rozdział 16. Podsumowanie części III (217)

CZĘŚĆ IV PRACA Z BAZĄ DANYCH (219)

Rozdział 17. Pierwszy projekt wykorzystujący bazę danych (221)

  • Przykład 17.1. Imiona (221)
    • ROZWIĄZANIE (222)

Rozdział 18. ORM Doctrine 2 (233)

  • Tworzenie i usuwanie bazy danych (233)
  • Doctrine 2.1 (234)
  • Tworzenie tabel w bazie danych (235)
  • Struktura klas dostępu do bazy danych (236)
  • Dodawanie nowych właściwości do istniejącej klasy (237)
  • Typy danych (238)
  • Operowanie klasami dostępu do bazy danych (240)
    • Klasy Entity i EntityManager (240)
    • Stan obiektu Entity (241)
    • Tworzenie nowych rekordów (242)
    • Usuwanie rekordów (243)
    • Pobieranie wszystkich rekordów z bazy (243)
  • Przykład 18.1. Rzeki (243)
    • ROZWIĄZANIE (244)

Rozdział 19. Dostosowywanie klas dostępu do bazy danych (251)

  • Klasy Entity oraz Repository (251)
  • Podstawowe metody klas Repository (252)
    • Metoda find() (252)
    • Metoda findAll() (253)
    • Metoda findBy() (253)
    • Metoda findOneBy() (254)
    • Metoda findByX() (254)
    • Metoda findOneByX() (255)
  • Nadpisywanie metod klasy Entity (255)
    • Metoda __toString() klasy Entity (255)
    • Metoda fromArray () klasy Entity (256)
  • Nadpisywanie metod klasy Repository (256)
  • Przykład 19.1. Tatry (257)
    • ROZWIĄZANIE (257)

Rozdział 20. Podsumowanie części IV (265)

CZĘŚĆ V ZACHOWANIA DOCTRINE (267)

Rozdział 21. Instalacja i konfiguracja rozszerzeń DoctrineExtensions (269)

  • Przykład 21.1. Przygotowanie dystrybucji symfony2-customized-v3 zawierającej pakiet StofDoctrineExtensionsBundle (270)
    • ROZWIĄZANIE (270)

Rozdział 22. Zachowanie sluggable (275)

  • Identyfikatory slug (275)
  • Automatyczne generowanie identyfikatorów slug w Symfony 2 (276)
  • Przykład 22.1. Wyrazy - test zachowania sluggable (277)
    • ROZWIĄZANIE (277)
  • Parametry adnotacji konfigurujących wartości slug (280)

Rozdział 23. Zachowanie timestampable (281)

  • Przykład 23.1. Wyrazy - test zachowania timestampable (282)
    • ROZWIĄZANIE (282)

Rozdział 24. Zachowanie translatable (283)

  • Wstawianie tłumaczeń do bazy danych (284)
  • Odczytywanie tłumaczeń (286)
  • Przykł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 (297)

  • Adresy URL zawierające zmienne (297)
    • Konwersja wejściowa (298)
    • Konwersja wyjściowa (298)
  • Wyszukiwanie pojedynczego rekordu na podstawie klucza głównego (298)
  • Wyświetlanie właściwości rekordu (299)
  • Przykład 26.1. Piosenki wojskowe (299)
    • ROZWIĄZANIE (300)

Rozdział 27. Identyfikacja rekordu na podstawie wartości slug (307)

  • Przykład 27.1. Piosenki wojskowe - użycie identyfikatorów slug (308)
    • ROZWIĄZANIE (308)

Rozdział 28. Generowanie menu na podstawie zawartości bazy danych (311)

  • Przykład 28.1. Treny (311)
    • ROZWIĄZANIE (312)

Rozdział 29. Udostępnianie plików binarnych (319)

  • Przykład 29.1. Download - pliki zapisane w bazie danych (320)
    • ROZWIĄZANIE (320)
  • Przykład 29.2. Download - pliki pobierane z folderu (325)
    • ROZWIĄZANIE (325)

Rozdział 30. Podsumowanie części VI (327)

CZĘŚĆ VII RELACJE (329)

Rozdział 31. Relacje 1:1 (331)

  • Klucze obce o wartości NULL (332)
  • Użycie relacji 1:1 w Symfony 2 (332)
  • Operowanie rekordami powiązanymi relacją (334)
    • Tworzenie rekordów (334)
    • Rekord zależny (335)
  • Przykład 31.1. Dane użytkowników (335)
    • ROZWIĄZANIE (335)
  • Akcje referencyjne SQL (338)
  • Programowe akcje referencyjne Doctrine 2.1 (339)
    • Parametr cascade (339)
    • Parametr orphanRemoval (340)
  • Relacje jednokierunkowe i dwukierunkowe (340)
  • Synchronizacja obiektów z bazą danych (342)

Rozdział 32. Relacje 1:n (jeden do wielu) (345)

  • Klucze obce o wartości NULL (346)
  • Użycie relacji 1:n w Symfony 2 (346)
  • Właściciel relacji 1:n (349)
  • Operowanie rekordami powiązanymi relacją (349)
    • Tworzenie rekordów (349)
    • Rekordy zależne (350)
    • Rekord nadrzędny (351)
  • Synchronizacja relacji (351)
  • Akcje referencyjne (352)
    • Akcje SQL-owe (352)
    • Akcje Doctrine (352)
  • Przykład 32.1. Kontynent i państwa (353)
    • ROZWIĄZANIE (353)
  • Porządkowanie rekordów (357)

Rozdział 33. Relacje n:m (wiele do wielu) (359)

  • Użycie relacji n:m w Symfony 2 (360)
  • Właściciel relacji n:m (361)
  • Tabela łącząca relacji n:m (362)
  • Operowanie rekordami powiązanymi relacją (362)
    • Tworzenie rekordów (362)
    • Rekordy zależne (363)
    • Synchronizacja relacji (364)
    • Usuwanie powiązania relacyjnego (364)
  • Akcje referencyjne SQL (365)
    • Akcje SQL-owe (365)
  • Przykład 33.1. Filmy i aktorzy (365)
    • ROZWIĄZANIE (365)
  • Porządkowanie rekordów (370)

Rozdział 34. Relacje, akcje index i show oraz widoki częściowe (373)

  • Przykład 34.1. Kontynenty/Państwa - akcje show i widoki częściowe (375)
  • Przykład 34.2. Filmy/Aktorzy - akcje show i widoki częściowe (376)
  • Przykład 34.3. Powieści Agaty Christie (376)
    • ROZWIĄZANIE (377)

Rozdział 35. Podsumowanie części VII (385)

CZĘŚĆ VIII PANELE CRUD I ZABEZPIECZANIE DOSTĘPU DO APLIKACJI (387)

Rozdział 36. Generowanie paneli administracyjnych CRUD (389)

    • Adresy URL akcji CRUD (391)
  • Ponowne generowanie paneli CRUD (394)
  • Panele CRUD a relacje (394)
  • Przykład 36.1. Imiona - panel CRUD (394)
    • ROZWIĄZANIE (395)
  • Przykład 36.2. Panel CRUD i relacja 1:1 (396)
    • ROZWIĄZANIE (396)
  • Przykład 36.3. Panel CRUD i relacja 1:n (399)
    • ROZWIĄZANIE (399)
  • Przykład 36.4. Panel CRUD i relacja n:m (401)
    • ROZWIĄZANIE (401)

Rozdział 37. Instalacja pakietu FOSUserBundle (403)

  • Przykład 37.1. Przygotowanie dystrybucji symfony2-customized-v4 zawierającej pakiet FOSUserBundle (403)
    • ROZWIĄZANIE (403)
  • Tworzenie kont i nadawanie uprawnień (408)
    • Tworzenie kont (409)
    • Aktywacja i deaktywacja konta (409)
    • Nadawanie i usuwanie uprawnień administracyjnych (409)
  • Przykład 37.2. Sprawdzenie działania dystrybucji symfony2-customized-v4 (410)
    • ROZWIĄZANIE (410)

Rozdział 38. Aplikacja dostępna wyłącznie dla zdefiniowanych użytkowników (415)

  • Uprawnienia dostępu (415)
  • Role użytkowników (416)
  • Nadawanie, usuwanie i sprawdzanie uprawnień użytkownikom (417)
  • Przykład 38.1. Korona ziemi (419)
    • ROZWIĄZANIE (420)
  • Hierarchia ról (427)

Rozdział 39. Aplikacja dostępna publicznie w trybie do odczytu (429)

  • Przykład 39.1. Korona ziemi - podział na frontend oraz backend (429)
    • ROZWIĄZANIE (430)
  • Przekierowania (432)
  • Osadzanie formularza do logowania na stronie głównej (434)
  • Przykład 39.2. Korona ziemi - osadzenie formularza do logowania w pliku base.html.twig (435)
    • ROZWIĄZANIE (435)

Rozdział 40. Rejestracja użytkowników i odzyskiwanie hasła (439)

  • Przykład 40.1. Kontynenty/państwa - frontend i backend (439)
    • ROZWIĄZANIE (439)
  • Przykład 40.2. Kontynenty/państwa - rejestracja użytkowników (442)
    • ROZWIĄZANIE (442)
  • Przykład 40.3. Kontynenty/państwa - odzyskiwanie hasła (444)
    • ROZWIĄZANIE (444)

Rozdział 41. Podsumowanie części VIII (447)

CZĘŚĆ IX PANELE ADMINISTRACYJNE SONATA (449)

Rozdział 42. Instalacja pakietów Sonata (451)

  • Przykład 42.1. Przygotowanie dystrybucji symfony2-customized-v5 zawierającej pakiet SonataAdminBundle (451)
    • ROZWIĄZANIE (452)
    • Krok 1. Wypakuj dystrybucję Symfony 2.0.X without vendors (452)
    • Krok 2. Zmodyfikuj plik deps (452)
    • Krok 3. Pobierz pakiety (453)
    • Krok 4. Usuń foldery .git (453)
    • Krok 5. Zarejestruj przestrzenie nazw (453)
    • Krok 6. Zarejestruj pakiety (454)
    • Krok 7. Zmodyfikuj konfigurację projektu (454)
    • Krok 8. Zmodyfikuj zabezpieczenia projektu (455)
    • Krok 9. Utwórz pakiet Application/Sonata/UserBundle (457)
    • Krok 10. Zmodyfikuj reguły routingu (457)
    • Krok 11. Zainstaluj style CSS oraz ikony (458)
    • Krok 12. Skompresuj otrzymaną dystrybucję (458)
  • Przykład 42.2. Sprawdź działanie dystrybucji symfony2-customized-v5 (458)
    • ROZWIĄZANIE (459)
    • Krok 1. Wypakuj dystrybucję i skonfiguruj bazę danych (459)
    • Krok 2. Utwórz tabele w bazie danych (459)
    • Krok 3. Utwórz konto administratora (459)
    • Krok 4. Sprawdź wygląd panelu administracyjnego (459)

Rozdział 43. Użycie paneli administracyjnych Sonata do własnych tabel (461)

  • Przykład 43.1. Miasta (461)
    • ROZWIĄZANIE (462)
    • Krok 1. Wypakuj dystrybucję i skonfiguruj bazę danych (462)
    • Krok 2. Utwórz pakiet My/Frontend (462)
    • Krok 3. Utwórz klasę CityAdmin (462)
    • Krok 4. Włącz panel administracyjny do zarządzania rekordami City (463)
    • Krok 5. Przygotuj plik zawierający tłumaczenia (464)
    • Krok 6. Sprawdź wygląd panelu administracyjnego do edycji miast (464)

Rozdział 44. Podsumowanie części IX (467)

  • Przykład 44.1. Przygotowanie dystrybucji symfony2-customized-v6 zawierającej omówione pakiety (467)
  • Przykład 44.2. Rzeki: aplikacja z panelem Sonata (468)
    • ROZWIĄZANIE (468)
    • Krok 1. Połącz przykład 18. z dystrybucją symfony2-customized-v6.zip (468)
    • Krok 2. Wykonaj panel Sonata (469)
  • Przykład 44.3. Kontynenty: aplikacja z panelem Sonata (469)
    • ROZWIĄZANIE (469)
  • Przykład 44.4. Filmy: aplikacja z panelem Sonata (470)
  • Przykład 44.5. Powieści Agaty Christie: aplikacja z panelem Sonata (470)

DODATKI (471)

Dodatek A Instalacja oprogramowania (473)

  • 1. XAMPP (473)
  • 2. Modyfikacja konfiguracji PHP (475)
  • 3. Modyfikacja pakietu PEAR (476)
  • 4. Uaktualnienie biblioteki PEAR (476)
  • 5. Code Sniffer (477)
  • 6. phpDocumentor (477)
  • 7. PHPUnit (477)
  • 8. Cygwin (478)
  • 9. Ścieżki dostępu (480)
  • 10. GraphViz (482)
  • 11. NetBeans (482)

Skorowidz (483)

  • Title: Symfony 2 od podstaw
  • Author: Włodzimierz Gajda
  • ISBN: 978-83-246-6241-8, 9788324662418
  • Date of issue: 2012-10-29
  • Format: Ebook
  • Item ID: symfo2
  • Publisher: Helion