![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 0 Dołączył: 24.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Mam troszkę dzisiaj czasu i buszuję po forum. Nospor napisał gdzieś, że do generowania formularzy (i zabezpieczenia się przed F5) używa własnej klasy (chyba, że źle zrozumiałem jego wypowiedź). Jako, że próbuję się "otrzaskać" z obiektowo zorientowanym php od razu powstał w mej łepetynie pomysł "napisz sobie klasę do formularzy"... No i faktycznie, pomysł mi się podoba bo jednak formularzy jest mnóstwo na stronach, przy których coś usiłuję dłubać i gdyby się udało fajną klasę do tego zrobić, byłoby spoko. Na razie wymyśliłem to tak: 1. Główna klasa to oczywiście klasa formular 2. Do niej dodałbym klasę formField, której właściwości to $_name (nazwa pola, do wrzucenia w name="") $_label (do wrzucenia w <label></label>) i $_desc (opis pola) 3. po klasie formField dziedziczyłyby klasy inputField (z właściwością type, czyloi wartością parametru type=""), selectField (z metodą addOption), textareaField itd... 4. Strukturę formularza tworzyłbym w sposób przybliżony do tego:
wynikiem ostatniej metody byłby gotowy kod formularza. Co Wy o tym myślicie? Jaki jest lepszy sposób na to? Jeszcze muszę tu gdzieś zapodać metodę insertValue(), która by wpisywała domyślną wartość... i do pól typu checkbox i do selecta jeszcze coś w rodzaju selectCurrentValue(). Ale czy wg Was podstawowe założenia mają sens? Jeśli nie, to wskażcie mi proszę luki w moim rozumowaniu. Pozdrawiam! Tarcil |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 1 Dołączył: 29.09.2008 Skąd: Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Ostatnio zaprojektowałem klasy formularzy, które powiązałem z Xajaxem. Dodatkowo dodałem klasy walidujące, które są używane przez formularze jak i inne klasy w aplikacji korzystające z tych samych danych.
Jeden formularz miał z reguły około 15 pól, z czego było parę formularzy różniących się między sobą rodzajami pól. Tworzenie klasy formularza to dobry pomysł. Ja zrobiłem tak że teraz jeśli chce dodać formularz definiuję nową klasę o nazwie np. Form_MojFormularz{} w której 1. dodaje kolejno obiekty formularza (input, checkbox itd). -> metoda setFields() 2. implementuje metodę, która pobiera dane z bazy jeśli chcę wyświetlić w tym formularzu dane ->setFieldsData() 3. określam po id, które pola mają być wyłączone (disabled) -> setDisabledFields() 4. implementuje metodę zapisującą dane z formularza do bazy Można tworzyć obiekty z jednej klasy Form i tam ustawiać nazwę formularza, jednak doszedłem do wniosku, że dla moich potrzeb lepiej jest tworzyć nowe klasy dla nowych formularzy ponieważ istnieje potrzeba implementacji metod takich jak np. zapis do bazy danych. Możesz zastosować np. Dekorator dla dodawania pól do nowego obiektu formularza, ja akurat z tego nie skorzystałem bo zmniejszyłaby się czytelność mojego kodu i pola dodaje bezpośrednio wewnątrz nowej klasy formularza (do kolekcji $objTagsCollection), a kontroler w roli klienta służy mi jedynie do: uruchomienia formularza/określenia z jakiego walidatora ma korzystać kalsa formularza/określenia pliku szablonu .phtml dla formularza/określenia czy formularza pobierany jest przez wywołanie Ajaxowe czy POST. Inny patent (uzupełniając to co napisał Black-Berry) to np. każda klasa pola (TagInput{}, TagSelect{} itd) posiada metodę insertMeToXajaxResponse($objXajaxResponse). Formularze tworzę właśnie używając biblioteki Xajax, ale zostawiam możliwość wygenerowania formularza zwykłym POST'em określając to w kontrolerze. Metoda insertMeToXajaxResponse() jest w każdej klasie Taga ponieważ każdy tag w nieco inny sposób dodaje się do odpowiedzi Ajax, można oczywiście zdefiniować odrębną klasę menadżera np. AjaxFormManager{} i jej przypisać odpowiedzialność za dodawanie pól do odpowiedzi Ajax, ale to już chyba kwestia wybrania konkretnej drogi w projekcie. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Ponadto każda klasa pola/taga posiada obiekt klasy TagError, jeśli podczas walidacji danych z bazy coś jest nie tak automatycznie zmienia się jego kolor na czerwono lub wykonywane są inne akcje (pomijam dlaczego zapisuje błędne dane do bazy - akurat jest taka potrzeba). Dzięki tworzeniu klasy formularza zauważysz naprawdę sporo zależności więc zachęcam do pracy. Ten post edytował WaterIntelligence 2.02.2009, 11:42:22 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.09.2025 - 17:27 |