Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Klasa formular, Jak się do tego zabrać?
Tarcil
post
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:
  1. <?php
  2. $form = new formular();
  3. $field = new inputField('name', Nazwa, 'wpisz swoje imię');
  4. $filed2 = new selectField('plec', 'Płeć', 'wybierz płeć');
  5. $filed2->addOption('k', 'kobieta');
  6. $filed2->addOption('m', 'mężczynza');
  7.  
  8. $form->generateHTML();
  9. ?>

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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
pinochet
post
Post #2





Grupa: Zarejestrowani
Postów: 120
Pomógł: 12
Dołączył: 9.10.2008
Skąd: Tricity.Rumia()

Ostrzeżenie: (0%)
-----


Tez cos takiego pisalem ale nie dopisalem pozatym byly to moje poczatki z OOP:] ... chętnie zobacze jak inni to rozwiązali ...
ja mialem cos takiego:
  1. <?php
  2. $form = new HTMLForm();
  3. $form->setType('POST');
  4. $form->setName('logowanie');
  5. $form->setAction('formularz.php');
  6. $form->addField(array('type'=>'TEXT', 'name'=>'login', 'maxlength'=>'50', 'valreg'=>'NULL'));
  7. $form->addField(array('type'=>'PASSWORD', 'name'=>'pass', 'maxlength'=>'50', 'valreg'=>'NULL'));
  8. $form->addField(array('type'=>'SUBMIT', 'name'=>'submit', 'maxlength'=>'1', 'valreg'=>'NULL', 'value'=>'Wy�lij'));
  9. echo $form->getHTML();
  10. ?>

dodatkowo jeszcze byly parametry value, class(CSS), ID, valreg(nazwa funkcji validującej dane pole lub metody w klasie validatora zraca true lub komunikat błędu.)
oprocz HTML obiekt potrafił zwracac XML(specjalna skladnia na potrzeby skryptu ...) i importowac formularz z XML + sprawdzanie poprawnosci z XSD. Byla tez mozliwosc zwracania tablicy z poszczególnymi polami formularza, aby można łatwo było formatowanie zmieniac i przekazac to w jakis sensowny sposob np do SMARTY. w opisie poszczególnego Field znajduje się tez komunikat wyswietlany w przypadku błędnie wypełnionego pola ...
warto tez pomyslec nad jakims cachowaniem bo przeciez formularze w większości nie są dynamiczne. ewentualnie jedna klasa runtime ... druga generator :]

Ten post edytował pinochet 23.01.2009, 18:44:17
Go to the top of the page
+Quote Post

Posty w temacie
- Tarcil   [PHP] Klasa formular   23.01.2009, 13:07:30
- - bim2   Ok, ok a do czego twoim zdaniem w tym wypadku będz...   23.01.2009, 15:53:00
- - Crozin   @bim2: class Field extends Form? Eeee... a co to m...   23.01.2009, 16:24:17
- - bim2   Hmm, inputy należą do forma. Można by znać indetyf...   23.01.2009, 17:36:07
- - pinochet   Tez cos takiego pisalem ale nie dopisalem pozatym ...   23.01.2009, 18:43:24
- - Tarcil   Jak pisałem, zaczynam się bawić w oop. Obiekt form...   24.01.2009, 11:43:23
- - Black-Berry   Z doświadczenia moge powiedziec ze lepiej sprawdza...   29.01.2009, 14:49:25
- - WaterIntelligence   Ostatnio zaprojektowałem klasy formularzy, które p...   2.02.2009, 11:38:28
- - Tarcil   Dzięki za porady Teraz muszę skończyć jedno pseu...   4.02.2009, 11:16:58
- - Black-Berry   Jeśli o mnie chodzi to czekam z niecierpliwośćią b...   4.02.2009, 13:50:00
|- - chiken   Cytat(Black-Berry @ 4.02.2009, 13:50...   14.02.2009, 14:13:26
|- - Black-Berry   Cytat(chiken @ 14.02.2009, 14:13:26 )...   14.02.2009, 14:50:52
- - chiken   hmmm, narazie korzystam z domyslnych wygladow, dla...   14.02.2009, 22:59:48
- - bim2   troche dzina konstrukcja, moim zdaniem powinno to ...   15.02.2009, 14:07:16
- - chiken   z definiowaniem klasy form, sie zgadzam, jeszcze u...   15.02.2009, 17:37:02
- - bim2   ale oczywiscie, html elements ma miec tylko dane r...   15.02.2009, 17:39:00
- - chiken   hmmm, a nie lepiej tworzyc obiekty w klasie html_e...   15.02.2009, 17:46:39
- - Black-Berry   Idealnie powinno być tak: [PHP] pobierz, plaintex...   15.02.2009, 18:10:24
- - chiken   dzieki za nakierowanie, wlasnie cos podobnego plan...   15.02.2009, 18:29:44
- - bim2   Ale co za prbolem z validacją? Validacja w tych kl...   15.02.2009, 20:19:32
|- - Black-Berry   Cytat(bim2 @ 15.02.2009, 20:19:32 ) A...   15.02.2009, 21:04:15
- - Whisller   Jakiś czas temu (od wersji 1.21.1 pomyliły mi się ...   15.02.2009, 21:19:12
- - Black-Berry   @bim2 Idea fajna ale z punktu widzenia profesjonal...   15.02.2009, 21:20:07
- - bim2   Ni potrzeba frameworka. Parsuje pregami fdokument ...   15.02.2009, 22:55:22
- - chiken   jak dla mnie ze tak powiem zamotane, powinno sie...   15.02.2009, 22:57:22
- - Black-Berry   Trochę tak. Zasada minimalizmu zawsze się opłaca:/   15.02.2009, 23:52:03
- - bim2   No nie wiem, bardzo ładnie działa i dodanie kolejn...   16.02.2009, 15:36:06
|- - chiken   Cytat(bim2 @ 16.02.2009, 15:36:06 ) N...   16.02.2009, 21:53:27
- - destroyerr   Oczywiście symfony ma formularze w obecnej postaci...   16.02.2009, 15:41:50
- - Crozin   @chlken: checkJavascript() to pewnie coś co genere...   17.02.2009, 08:18:00
- - chiken   no musiialem nie doczytac hehe   17.02.2009, 08:23:51


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 16.09.2025 - 23:19