Development

Documentation/pl_PL/book/1.0/14-Generators

You must first sign up to be able to contribute.

Oryginalny tekst: http://www.symfony-project.com/book/trunk/14-Generators [EN]

WERSJA ROBOCZA

Rozdział 14 - Generatory

Wiele aplikacji opiera się na informacjach przechowywanych w bazie danych oraz oferuje interfejs umożliwiający dostęp do nich. Symfony automatyzuje monotonny proces tworzenia modułu udostępniającego operacje na danych, bazujące na obiektach Propela. Jeżeli Twój obiekt został poprawnie zdefiniowany, symfony jest w stanie automatycznie wygenerować nawet panel administracyjny strony. Rozdział ten opowie Ci o dwóch generatorach dołączonych do symfony: scaffoldingu i generowaniu administracji. Drugi z nich opiera się na specjalnym pliku konfiguracyjnym, posiadającym kompletną składnię, więc większa część tego rozdziału opisuje różne możliwości generatora administracji.

Generacja kodu na podstawie modelu

W aplikacji web operacje dostępu do danych mogą zostać przypisane jednej z poniższych kategorii: Tworzenie rekordu Pobieranie rekordów Uaktualnienie rekordu (oraz modyfikacja jego kolumn) Usunięcie rekordu Operacje te są tak powszechne, że otrzymały akronim CRUD (ang. Create-Retrieve-Update-Delete). Wiele stron może zostać sprowadzonych do jednej z nich. Na przykład w aplikacji forum lista najnowszych postów będzie operacją pobrania (ang. retrieve), a odpowiedź na post będzie operacją utworzenia (ang. create).

Podstawowe akcje i szablony implementujące operacje CRUD dla danej tabeli są wielokrotnie tworzone w aplikacjach web. W symfony warstwa modelu zawiera wystarczającą ilość informacji do wygenerowania kodu dla operacji CRUD, aby przyspieszyć wczesną fazę rozwoju bądź tworzenia interfejsów back-end.

Wszystkie zadania generacji kodu na podstawie modelu tworzą cały moduł i wynikają z pojedynczego wywołania linii poleceń symfony w następującej postaci:

> symfony <TASK_NAME> <APP_NAME> <MODULE_NAME> <CLASS_NAME>

Zadania generacji kodu to propel-init-crud, propel-generate-crud oraz propel-init-admin.

Scaffolding oraz administracja

Podczas rozwoju aplikacji generacja kodu może zostać wykorzystana do dwóch różnych celów:

  • Scaffolding to prosta struktura (akcje i szablony) wymagana do wykonania CRUD na danej tabeli. Ilość kodu jest minimalna, gdyż stworzony został, aby służyć jako wytyczna przy dalszym rozwoju. Jest to podstawa, która musi być zaadaptowana, aby pasować do Twoich wymagań logiki i prezentacji. Scaffolding jest wykorzystywany głównie podczas fazy rozwoju, aby udostępnić dostęp przez web do bazy danych, zbudować prototyp, lub aby utworzyć moduł bazujący przede wszystkim na tabeli.
  • Panele administracyjne są wyspecjalizowanym interfejsem manipulacji danych, stworzonym głównie na potrzeby administracji. Różnią się one od scaffoldingu, ponieważ ich kod nie został przystosowany do ręcznej modyfikacji. Mogą być dostosowywane do potrzeb, rozszerzane lub składane na podstawie konfiguracji bądź dziedziczenia. Ich warstwa prezentacji jest ważna i korzystają one z dodatkowych możliwości takich, jak sortowanie, podział na strony czy filtrowanie. Panel administracyjny może zostac utworzony i przekazany klientowi jako ukończona część aplikacji.

Linia poleceń symfony wykorzystuje słowo crud, aby wyróżnić scaffolding, a admin panele administracyjne.

Inicjowanie bądź tworzenie kodu

Symfony oferuje dwa sposoby tworzenia kodu: albo poprzez dziedziczenie (init) albo generowanie kodu (generate).

Możesz zainicjować moduł, tj. stworzyć puste klasy dziedziczące po frameworku. Maskujemy tak kod PHP akcji i szablonów, aby uniknąć ich modyfikacji. Jest to użyteczne, jeżeli struktura Twoich danych nie jest ostateczna, lub jeżeli potrzebujesz szybkiego interfejsu do manipulowania danymi w bazie. Kod wykonywany podczas wywołania nie jest zlokalizowany w Twojej aplikacji, ale w cache. Zadania linii poleceń dla tego typu generacji zaczynają się od propel-init-.

Kod zainicjowanej akcji jest pusty. Na przykład moduł article posiada akcje wyglądające tak:

[php]
class articleActions extends autoarticleActions
{
}

Z drugiej strony, możesz również wygenerować kod akcji i szablonów, żeby mógł być modyfikowany. Utworzony moduł jest wtedy niezależny od klas frameworka i nie może zostać rozszerzony poprzez edycję konfiguracji. Zadania linii poleceń dla tego typu generacji zaczynają się od propel-generate-.

Jako że scaffoldingi są budowane, aby służyć za podstawę do dalszego rozwoju, to zwykle najlepiej jest je wygenerować. Z kolei panel administracyjny powinien być łatwy do uaktualnienia poprzez zmianę konfiguracji i pozostać użyteczny, gdy model ulegnie zmianie. To wyjaśnia, dlaczego administracja jest wyłącznie inicjowana.

Przykładowy model danych