Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Obiektowe formularze, Automatyczna walidacja JS i PHP
Vengeance
post 11.08.2005, 23:33:51
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
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
NuLL
post 11.08.2005, 23:41:42
Post #2





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

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


Jestem trochę spiący więc kodu samego nie komentuję. Ale mam wskazówkę - sporo pomysłow możesz znaleść w PEAR::QuickForm napewno :-)


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
Vengeance
post 12.08.2005, 00:03:05
Post #3





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

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


Wiesz... wpadłem na to w połowie projektu i jak się okazało (mimo iż QuickForm w życiu na oczy wcześniej nie widziałem) to 60% kodu była bardzo podobna :]


Ale nie chce używać pakietów PEAR, a pomysły zawsze ściągnąć można


--------------------
Go to the top of the page
+Quote Post
NuLL
post 12.08.2005, 00:06:45
Post #4





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

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


No dobra coś napisze. Dla osobiście za dużo kodu. Można być napisać nakładkę aby mieć coś ala:

  1. <?php
  2.  
  3. $f=new form();
  4. $f->addInput();//w nawiasie jakies cos
  5.  
  6. ?>

addInout byłby nakładkę na tworzenie obiektu Input, można by mu podać regułki itp i wszystko w samej metodzie smile.gif


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
Vengeance
post 12.08.2005, 01:00:12
Post #5





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

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


Jak dla mnie kodu wcale nie jest dużo jak na ilość operacji które skraca.
Jako że biblioteke raczej ja będę wykorzystywał (inni zazwyczaj i tak wolą pisać zawsze swoje własne) to nie skorzystam z propozycji :]

Ma ktoś pomysł na te errory?


--------------------
Go to the top of the page
+Quote Post
Nievinny
post 12.08.2005, 08:06:27
Post #6





Grupa: Zarejestrowani
Postów: 134
Pomógł: 0
Dołączył: 27.01.2005
Skąd: Białystok

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


O, @Vee -> niekoniecznie, zaglądnąłem i myślę, że jak będzie trochę dopracowana (Ty albo ja, dla mnie nie stanowi to różnicy) to warto ją wykorzystać.


--------------------
Go to the top of the page
+Quote Post
nospor
post 12.08.2005, 08:16:08
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Twoja klasa ma jedną poważną wadę, która uniemożliwi korzystanie z tej kalsy szerszym odbiorcom.
Nie ma możliwości rozmieszczania elementów tam gdzie się chce. W tej chwili lecą chyba jeden pod drugim.

pozatym zgadzam się z @Null za dużo funkcji by jedno pole wygenerować. jedno addInput powino wystarczyć (w mojej klasie wystarcza, no i można dowolnie umieszczać elementy biggrin.gif )


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
NuLL
post 12.08.2005, 09:13:23
Post #8





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

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


Wg. dobrym pomysłem jest generowanie formularzy z plików XML biggrin.gif Pracuje nad czymś takim ale z braku czasu nie idzie. Wtedy generowanie formularza to jest jedna linijka co oszczędza napradę sporo kodu.


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
Vengeance
post 12.08.2005, 11:36:17
Post #9





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

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


@nospor, wręcz odwrotnie! Do każdego pola możesz dodać dowolne (w ramach specyfikacji html) atrybuty jak np. class czy style. Wszystko da się ułożyć jak tylko główa zamarzy dzięki CSS.

Efekt "wszystko pod sobą" w przykładzie jest dlatego iż właśnie zastosowano tam krótki CSS w postaci "dislpay: block;" co powoduje wyświetlanie pod sobą. Ale możliwości wg mnie są ogromne. No może
nie oblejesz formularza w tabelki, ale powiedzmy sobie szczerze na co to komu :] Tabelka i tak nie do tego sluży ;P


Co do ilości kodu: Przecież u mnie ten Input to 2 linie. Najpierw nowy obiekt Input a potem dodanie go do Formy przez AddChild().

A cała reszta kodu to tworzenie tagów <label> czy <legend> bo niby czemu miały by być generowane automatycznie przez klase Input? Przecież właśnie chodzi nam o osiągnięcie maksymalnie elastycznego układu wyświetlania, nie? :]

NuLL: Ja nie przepadam za wszystkim co się wiąże z oddzielnymi konfigami, plikami w tym XML itd. Dla mnie to niepotrzebne komplikowanie (choć można więcej przez to uzyskać, zgodze się).

Ale czy nie tyle samo lini wyjdzie ci moim kodem bez konfigów, a twoim (jedna linia w php i dziesiątki w confie XML?)

@Nievinny: Co rozumiesz przez "dopracowana"? Uściślij to będę wiedzial na co uwagę zwrócić.

Dzięki za uwagi, widze że opłaca się dalej pracować nad tym kodem :]


--------------------
Go to the top of the page
+Quote Post
nospor
post 12.08.2005, 11:45:11
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




wedlug mnie ta pozycja dzięki css to częściowe rozwiązanie, może trochę życie utrudnić. No bo teraz przy css dla każdego pola muszę definiować styl, position absolute aby gdzieś tam się pojawil. A jeżeli to będzie jakieś tabelryczne ulożenia to szybciej chyba tabelka by poszla niż zabawa w position absolute. Przy dużej liczbe elementów formualrza będzie się można zachlastać przy próbie zmianie polozenia. Tak mi się wydaje


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Vengeance
post 12.08.2005, 15:31:51
Post #11





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

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


@nospor: Jeśli piszesz o defniowaniu dla każdego pola styli, czy też o pozycjonowaniu absolutnym to chyba po prostu jeszcze nie do końca znasz tajniki CSS. Prawda jest taka, że na stronie wszystkie formularze mają identyczny wygląd. Toteż napisanie odpowiedniego stylu obejmującego wszystkie formy nie jest problemem.

A gdy potrzebujesz innego wyglądu, możesz zastosować wszystkie możliwości takie jak atrybuty "class" czy "style".

Pozdrawiam


--------------------
Go to the top of the page
+Quote Post
nospor
post 12.08.2005, 15:35:05
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Prawda jest taka, że na stronie wszystkie formularze mają identyczny wygląd
Na jakiej stronie? Może na Twojej. Ja mówiłem szerszym gronie odbiorców, u których może być inaczej.

Co do css to faktycznie w 100% tego 'cuda' nie znam biggrin.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
serafin
post 12.08.2005, 16:45:32
Post #13





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 23.11.2003
Skąd: Poznań

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


Szczerze Vengenance przekombinowujesz winksmiley.jpg. Szybciej napisze taki formularz w surowym htmlu niz przy wykorzystaniu twoich "widgetow". Sorry ale klasy piszemy po to zeby przyspieszyc/zautomatyzowac niektore czynnosci. U ciebie dziala to w druga strone.

Co do tworzenia formularzy z pliku xml. Pomysl fajny ale nie nowy (patrz: glide) ale znowu wiekszy narzut czasowy przy tworzeniu pliku xml niz wstukaniu szablonu

Jesteś szalooona guitar.gif


--------------------
Making IT works
Go to the top of the page
+Quote Post
matid
post 12.08.2005, 16:51:19
Post #14





Grupa: Zarejestrowani
Postów: 362
Pomógł: 0
Dołączył: 18.02.2004
Skąd: Knurów

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


Cytat(serafin @ 2005-08-12 17:45:32)
Szczerze Vengenance przekombinowujesz winksmiley.jpg. Szybciej napisze taki formularz w surowym htmlu niz przy wykorzystaniu twoich "widgetow". Sorry ale klasy piszemy po to zeby przyspieszyc/zautomatyzowac niektore czynnosci. U ciebie dziala to w druga strone.

Weź pod uwagę, że tutaj masz od razu walidację formularzy w JS i php...
Go to the top of the page
+Quote Post
Vengeance
post 12.08.2005, 17:01:04
Post #15





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

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


Cytat(nospor @ 2005-08-12 16:35:05)
Cytat
Prawda jest taka, że na stronie wszystkie formularze mają identyczny wygląd
Na jakiej stronie? Może na Twojej. Ja mówiłem szerszym gronie odbiorców, u których może być inaczej.

Co do css to faktycznie w 100% tego 'cuda' nie znam biggrin.gif

Przecież tworząc formularze wiesz gdzie się będą znajdować i jak mają wyglądać.
Tak więc przy pomocy CSS można spokojnie i szybko stowrzyć unikalny wygląd każdego formularza. robisz sobie:

<div id="form2">
<?php echo $Form;?>
</div>

A w CSS definicje stylów dla formularza zagnieżdżonego w danym DIV i już :]
W kodzie php nie musisz wtedy nawet definiować stli czy klas. Wszystko rozwiązujesz przez możliwości CSS.


@serafin: Już się przyzwyczaiłem, że jesteś anty wszystko a w szczególnośći anty moje :] Zastanawia mnie tylko, dlaczego tyle ludzi używa PEAR QucikForm. Przecież to nic nie ułatwia :/


--------------------
Go to the top of the page
+Quote Post
ebe
post 12.08.2005, 17:04:06
Post #16





Grupa: Zarejestrowani
Postów: 150
Pomógł: 1
Dołączył: 23.01.2004

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


I do tego jeśli piszesz cms'a który wykorzystuje wirtualne klasy contentu(vide ez) to taki generator jest nieoceniony do automatycznego generowania formularzy. Też coś takiego robię :]


--------------------
Słyszałem, że macie tutaj jakieś takie php... fajne to, dobre to jest?
Go to the top of the page
+Quote Post
aleksander
post 12.08.2005, 18:11:28
Post #17





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

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


@Vee zainspirowałeś mnie, żeby samemu coś takiego napisac smile.gif To jest o tyle dobre, że moge sobie generowac formularz na podstawie tabeli bazy danych:)

EDIT: hehe juz mam pierwsza wersje:) Zastanawiam sie tylko jak rozwiazac problem wyswietlania wszystkich tych rzeczy:) Vee mowisz ze CSS wszystko załatwi? w sumie nie jestem tego do konca pewien...
Go to the top of the page
+Quote Post
Vengeance
post 12.08.2005, 19:19:58
Post #18





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

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


Na przykładzie mojego kodu, gdyby ktoś się uparł by mieć tabelki można dopisać klasy Tr, Td, Table które działałby by wg wzorca Decorator. W konstruktorze przekazywał byś element (np Input) i przez __set __get i __call przenosił wszystkie odwołania na ten element.

A przy metodzie __toString() dopisać by trzeba było wyświetlanie odpowiednich tagów przed i po tym ww. Input.


--------------------
Go to the top of the page
+Quote Post
aleksander
post 12.08.2005, 19:23:29
Post #19





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

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


a co powiesz na malutki system szabloników??biggrin.gif

cos w stylu:
  1. {while elements}
  2. <tr>
  3. <td>
  4. {$element.name}
  5. </td>
  6. <td>
  7. {$element}
  8. </td>
  9. </tr>
  10. {/while}
User tworzy sobie wtedy jakis standardowy wyglad formularza i stosuje go do nich:)

Wiem to wariactwo ale wkoncu alek to alek laugh.gif
Go to the top of the page
+Quote Post
Vengeance
post 12.08.2005, 19:49:38
Post #20





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

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


Też tak można. Każdy robi jak mu wygodniej :]

Tak btw, co nie pasuje ci w moim kodzie iż piszesz swój (chęć nauki, wiem, też to mam. Ale pytam serio bo chce poznać słabe strony mojego kodu)


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 15:03