Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Obiektowe formularze, Automatyczna walidacja JS i PHP
Vengeance
post
Post #1





Grupa: Zarejestrowani
Postów: 657
Pomógł: 2
Dołączył: 15.08.2003
Skąd: Łódź

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


Witam,

Daje ten wątek tu a nie na "Oceny" gdyż tam bardziej pasują projekty zakończone.
Moje, to jedynie biblioteka w rozwoju :]

Napisałem w ciągu ostatnich trzech dni troche kodu php5, mającego za zadanie
generowanie formularzy, ich automatyczną walidację po stronie JavaScript jak i php.

Przykład: http://vengeance.strefaphp.net/ObjectForms/Example.php5
Źródło przykładu: http://vengeance.strefaphp.net/ObjectForms/source.php

A oto źródła obecnej wersji tego co napisałem: http://vengeance.strefaphp.net/ObjectForms/ObjectForms.zip

Byłbym wdzięczny za jakieś uwagi, sugestie. Uważam, iż API jak i możliwości są wystarczająco dobre. Jednak nie zadowalają mnie niektóre obecne rozwiąznaia w samym kodzie. Np. realizacja wykrywania błędów podczas walidacji i wyświetlanie stosownego komunikatu obok Input.

Jeżeli byście byli tak uprzejmi i zaproponowali jakieś swoje (wg was lepsze) rozwiązania pewnie wspólnymi siłami mogła by powstać niezła biblioteka uprzyjemniająca prace nam wszystkim.

Obecnie najlepiej "rozbudowane" są Textarea oraz Input typu Text/Password
Selecty, checkboxy i radio nie są jeszcze oprogramowane.

Pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
aleksander
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 742
Pomógł: 0
Dołączył: 14.12.2003
Skąd: Gdańsk, Trójmiasto

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


ok, wiec ten generator juz jest napisany (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) jeszcze nie zakodowalem wszystkich pól mysql ale jestem w trakcie:)

u mnie tworzenie przykładowego formularza wyglada tak:
  1. <?php
  2. $form = new Form( array( 'name' =>'testowyform', 'action' => '#', 'method' => 'post' ) );
  3.  
  4. $form->addElement( new Input( array( 'type' => 'text', 'name' => 'test' ) ) );
  5.  
  6. $oEmail = new Input( array( 'type' => 'text', 'id' => 'email', 'name' => 'email' ) );
  7. $form->addRule( new EmailRule( $oEmail, 'email jest zly!' ) );
  8. $form->addElement($oInput );
  9.  
  10. $oPhone = new Input( array( 'type' => 'text', 'id' => 'phone', 'name' => 'phone' ) );
  11. $form->addRule( new OnlyNumericRule( $oPhone, 'pole moze miec tylko wartosci numeryczne' ) );
  12. $form->addElement( $oPhone );
  13.  
  14. $form->addElement( new Input( array( 'type' => 'submit', 'name' => 'a', 'value' => 'Zapisz' ) ) );
  15. echo $form->getCode();
  16. ?>
Rezultat:
  1. <script language="JavaScript">
  2. var braki;
  3. function checkScriptValidation()
  4. {
  5. braki = "";
  6. var regexp = /^[0-9a-zA-Z.]+\@[0-9a-zA-Z]+\.[0-9a-zA-Z.]+$/;
  7. var email = document.getElementById( "email" ).value;
  8. if ((regexp.test(email) == false) || (email == null))
  9. {
  10. braki += "email jest zly!"
  11. }
  12. var regexp = /^[0-9]*$/;
  13. var element = document.getElementById( "phone" ).value;
  14. if ((regexp.test(element) == false) || (element == null))
  15. {
  16. braki += "pole moze miec tylko wartosci numeryczne"
  17. }
  18. if( braki != "" )
  19. {
  20. alert( "Formularz zawiera błedy, które należy poprawic:\n" + braki );
  21. return false;
  22. }
  23. return true;
  24. }
  25. </script><form name="testowyform" action="#" method="post" onsubmit="return checkScriptValidation();" >
  26. <input type="text" name="test" />
  27. <input type="text" id="email" name="email" />
  28. <input type="text" id="phone" name="phone" />
  29. <input type="submit" name="a" value="Zapisz" />
  30. </form>
Zamierzam jeszcze wprowadzic dodatkowy fetaure, czyli mini systemik szablonów. Przykładowy szablon:
  1. <div>
  2. <!-- FOR START -->
  3. <span style="font-weight: bold"><!-- LABEL --></span><!-- ELEMENT --><br />
  4. <!-- FOR END -->
  5. </div>
Czyli kilka znaczników, prosciutki szablonik, wg którego tworzony jest formularz. Daje to duzo wieksze pole do popisu w przypadku ustawiania pól formularza (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Kod php wyglada wtedy tak:
  1. <?php
  2. // defniowanie wszystkich pól
  3. $form->useTemplate( 'example.tpl' );
  4. echo $form->getCode();
  5. ?>
Go to the top of the page
+Quote Post

Posty w temacie
- Vengeance   Obiektowe formularze   11.08.2005, 23:33:51
- - NuLL   Jestem trochę spiący więc kodu samego nie komentuj...   11.08.2005, 23:41:42
- - Vengeance   Wiesz... wpadłem na to w połowie projektu i jak si...   12.08.2005, 00:03:05
- - NuLL   No dobra coś napisze. Dla osobiście za dużo kodu. ...   12.08.2005, 00:06:45
- - Vengeance   Jak dla mnie kodu wcale nie jest dużo jak na ilość...   12.08.2005, 01:00:12
- - Nievinny   O, @Vee -> niekoniecznie, zaglądnąłem i myślę, ...   12.08.2005, 08:06:27
- - nospor   Twoja klasa ma jedną poważną wadę, która uniemożli...   12.08.2005, 08:16:08
- - NuLL   Wg. dobrym pomysłem jest generowanie formularzy z ...   12.08.2005, 09:13:23
- - Vengeance   @nospor, wręcz odwrotnie! Do każdego pola może...   12.08.2005, 11:36:17
- - nospor   wedlug mnie ta pozycja dzięki css to częściowe roz...   12.08.2005, 11:45:11
- - Vengeance   @nospor: Jeśli piszesz o defniowaniu dla każdego p...   12.08.2005, 15:31:51
- - nospor   CytatPrawda jest taka, że na stronie wszystkie for...   12.08.2005, 15:35:05
- - serafin   Szczerze Vengenance przekombinowujesz . Szybciej n...   12.08.2005, 16:45:32
- - matid   Cytat(serafin @ 2005-08-12 17:45:32)Szczerze ...   12.08.2005, 16:51:19
- - Vengeance   Cytat(nospor @ 2005-08-12 16:35:05)CytatPrawd...   12.08.2005, 17:01:04
- - ebe   I do tego jeśli piszesz cms'a który wykorzystu...   12.08.2005, 17:04:06
- - aleksander   @Vee zainspirowałeś mnie, żeby samemu coś takiego ...   12.08.2005, 18:11:28
- - Vengeance   Na przykładzie mojego kodu, gdyby ktoś się uparł b...   12.08.2005, 19:19:58
- - aleksander   a co powiesz na malutki system szabloników?? cos ...   12.08.2005, 19:23:29
- - Vengeance   Też tak można. Każdy robi jak mu wygodniej :] Tak...   12.08.2005, 19:49:38
- - aleksander   chec nauki w sumie narazie napisalem sam generat...   12.08.2005, 20:02:09
- - nospor   Skoro już @aleksander wspomanial o systemie szablo...   16.08.2005, 08:08:36
- - Vengeance   Alert wyświetla się tylko jeden. W razie ominięcia...   16.08.2005, 17:40:44
- - aleksander   ja od siebie jeszcze dodam, że mam zamiar dopisac ...   31.08.2005, 12:53:23
- - bela_666   Też coś takiego napisałem, ale jakoś nie podoba mi...   31.08.2005, 19:17:05
- - aleksander   ok, wiec ten generator juz jest napisany jeszcze ...   3.09.2005, 18:23:03
- - Vengeance   Uwzględnij w kodzie JS, że na stronie może być wię...   3.09.2005, 22:00:17
- - aleksander   to bedzie w wersji 2.0   3.09.2005, 22:01:28


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: 5.10.2025 - 04:14