![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 199 Pomógł: 2 Dołączył: 9.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
zaczalem budowac aplikacje gdzie uzywam Doctrine 2 i wykorzystuje Entity na podstawie ktorych rowniez formularze wykorzystując Zend\Form\Annotation. przykladowy kawalek kodu Entity\Product.php:
przykładowa aplikacja na której strukturze sie wzoruje Pytanie czy takie rozwiazanie tworzenia, validacji i filtracji formularzy jest optymalne i sklalarne ? Nie chce zagrzebac sie juz na poczatku ze slaba konstrukcja aplikacji. Byc moze lepiej jest wykorzystywac standardowo formy Zend\Form\Form i use Zend\InputFilter\* ? przykładowa aplikacja o strukturze ktora mam na mysli Ten post edytował netvalue 22.05.2014, 14:24:52 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 97 Pomógł: 45 Dołączył: 5.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
Ja osobiście nie jestem zwolennikiem używania adnotacji, nie podoba mi się ten sposób definiowania danych.
Na pewno jest przejrzysty i szybszy(szybciej się go tworzy) niż standardowy sposób definiowania formularza. Do przetwarzania adnotacji używane jest Reflecion API, które pod względem wydajnościowym jest zapewne wolniejsze od typowych funkcji i operacji. Chociaż i z tym jest coraz lepiej wraz z nowszymi wersjami PHP. Tworząc w Zend 2, na pewno warto być zaznajomionym z tym jak odbywa się tworzenie formularzy w standardowy sposób, jak można 'dobrać się' do odpowiednich właściwości itd. Większość modułów wykorzystuje standardowy sposób tworzenia formularzy. |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 597 Pomógł: 30 Dołączył: 19.02.2003 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
Ogólnie tego się nie powinno używać, to jest dobre jak musisz coś zrobić szybko i o tym zapomnieć. Jeśli planujesz to rozwijać to pamiętaj, że nie wszystko w ten sposób da się zrobić. Zastosuj standardowe formy i filtry.
-------------------- Zapraszam na mój php blog, tworzenie stron.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 199 Pomógł: 2 Dołączył: 9.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
oki dzieki za odpowidzi...
nie moge znalezc odpowiedzi na taka sytuacje : tworze formularz w sposób standardowy + filtry. Chce stworzyć elementy typu SELECT (np. kategorie) a w jego polach OPTIONS aby były wstawione kategorie z bazdy danych. Korzystam z Doctrine2... Jesli mam recznie stworzyc sobie takie element w widoku nie ma problemu... ale jesli chcialbym zeby byl genrowany juz z poziomu klasy formy to juz trudniej... |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 97 Pomógł: 45 Dołączył: 5.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
Jest na to kilka sposób, dwa najczęściej używane to:
1. Standardowa klasa Select (Zend\Form\Element\Select) W klasie formularza jest taka definicja pola select:
W tej samej klasie, dodajesz metodę:
I w kontrolerze, jak tworzysz instancję formularza to przekazujesz tablicę z danymi, które mają znaleźć się w formularzu albo tablicę obiektów i tam filtrujesz te dane, które Cię interesują
2. Używanie klas z Doctrine 2 (DoctrineModule\Form\Element\*) Doctrine 2 udostępnia 3 klasy do łatwego zarządzania: - Select (DoctrineModule\Form\Element\ObjectSelect) - Radio (DoctrineModule\Form\Element\ObjectRadio) - Checkbox (DoctrineModule\Form\Element\ObjectMultiCheckbox) Przykład użycia można znaleźć pod tym adresem https://github.com/doctrine/DoctrineModule/...form-element.md. W skrócie. Definiujemy w tablicy, pod kluczem target_class entity z którego doctrine ma pobrać zawartość do selecta/radio/checkboxa. Następnie:
Następnie podajemy nazwę metody jaką mają być pobrane dane w tym przypadku findBy() oraz parametry wyszukiwania, które jest równoznaczne z: |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 199 Pomógł: 2 Dołączył: 9.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
same dobrodziejstwa Doctrine2
![]() troche się teraz zgubiłem z logiką używania Entity i Model. Mianowicie, czy "obróbke" danych powinienem prowadzić w klasach Entity\Example.php czy Model\Example.php ? Obecnie ma maką strukturę:
teraz czy tą obróbkę danych np. SaveDB oraz inne podobne powinienem stosować w Entity\Product.php czy utworzyć :
i tutaj w klasie realizować obróbkę , zapisy, itp. ? nikt nie wie ![]() Ten post edytował netvalue 23.05.2014, 13:18:27 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.06.2025 - 06:40 |