![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa ![]() |
download
Wczoraj w wolnej chwili takie coś napisałem ... i postanowiłem że się podzielę ![]() Klasa ma za zadanie generowanie formularza html . Użycie : klasę zaczynamy tak:
przesłanie danych nie jest obowiązkowe , jeśli nic nie wpiszemy form będzie przesyłać dane postem do obecnej strony. inna forma startu klasy to danie tablicy z danymi:
do formularza możemy dodać: legendę: $form->addLegend('tytuł'); //<label> $form->addLabel($text,$stylOpcjonalny); inputy dodajmy przez funkcję addInput(); , dane możemy przesłać na 2 sposoby -> przez tablicę lub standardowe przekazanie parametrów : //addInput($type,$name=null,$value=null,$style=null,$html=null,$label=null) //w inpucie jest możliwość wywołania <label> dzięki czemu będzie w przesłanych tagach html
dając opcjonalny parametr html dostajemy przez i za inputem tagi html. textarea: również parametry możemy przesłać na 2 sposoby. //addArea($name,$value=null,$style=null,$rows=null,$cols=null,$html=null); np: $form->addArea('arenka',null,null,20,40); select 2 typy przesyłania danych //addSelect($name,$style=null,$html=null); opcje dodajemy przez: //addOption($value,$title,$selected=false) //też można na 2 sposoby
select zamykamy funkcją closeSelect() jednak nie jest to wymagane. na koniec aby otrzymać nasz gotowy formularz używamy funkcji getForm(); : echo $form->getForm(); Jakiś przykładowy form:
To chyba tyle ![]() |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 662 Pomógł: 45 Dołączył: 26.03.2007 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Hmmm mało Ci ta klasa ułatwia.
Kod 'enctype'=>'multipart/form-data', Ja nigdy tego nie pamiętam, więc u siebie wystarczy że tam Kod 'method'=>'file', Po drugie, strasznie dużo danych przekazujesz do metod. One wszystkie są wymagane ? Z guzikiem, fajnym pomyslem jest coś takiego. Kod $form->getForm(); Zwróci Kod </form> a Kod $form->getForm('Wyślij'); Kod <input type='submit" value="Wyślij" /> </form> Oczywiście to ładnie ustawić, to prosty przykład ![]() ![]() Ten post edytował Moli 15.05.2009, 13:11:56 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa ![]() |
//Po drugie, strasznie dużo danych przekazujesz do metod. One wszystkie są wymagane ?
nie smile.gif został dodany bajer z $form->getForm('Wyślij'); ![]() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 81 Pomógł: 4 Dołączył: 15.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Do obsługi formularzy mam trochę inne podejście.
Jedna klasa reprezentuje formularz, a wszystkie elementy mają swoje klasy. W uproszczeniu wygląda to tak.
Obiekt $objForm posiada oczywiście metody renderujące lub zwracające kod. Według mnie, jedna klasa do obsługa tak istotnego elementu aplikacji to za mało. Twoja klasa nie zapewnia Ci elastyczności i tak naprawdę nie wspomaga obsługi formularzy. Pozdrawiam. Ten post edytował pejott 15.05.2009, 14:47:43 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa ![]() |
tworzyć osobno 2 klasy dla <form> i <input> to imho trochę przesada ...
//$objInputNickname->setValidator(new dfStringValidator(...)); ... //$objInputEmail->setValidator(new dfEmailValidator(...)); 2 osobne klasy do validacji maila i stringa ... nie lepiej jedna klasa valid ? //Twoja klasa nie zapewnia Ci elastyczności i tak naprawdę nie wspomaga obsługi formularzy. Dlaczego ? jakoś mi tak lepiej pisać
niż
mnie problemów z " ' jest jeśli chce się bawić z $_POST w formie Ten post edytował Spawnm 15.05.2009, 15:13:20 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 81 Pomógł: 4 Dołączył: 15.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Tak się składa, że tych klas nie jest dwie, tylko więcej.
![]() Odpowiednio dla select, textarea, radio, checkbox i tak dalej. Kiedyś miałem jedną klasę walidującą dane, ale właśnie ze względu na formularze rozbiłem ją na kilka klas. Hm, może nie widzisz zalet takiego rozwiązania, ale jak popracujesz trochę na swojej klasie, to i tak dojdziesz do podobnych wniosków. Dodam, iż nie jest to rozwiązanie stosowane tylko przeze mnie. Tak jest w ZF i z tego co mi się wydaje to w Symfony podobnie. Oczywiście mówie o klasach walidujących. Pozdrawiam. |
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa ![]() |
nie wiem jak z zf i symfony ale np kohana ma klasę valid i w niej jest wszystko
![]() i tak z ciekawości co masz w tych klasach ? jedna funkcja __construct ? pokaż jakąś ![]() |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 81 Pomógł: 4 Dołączył: 15.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Aktualnie nie mam dostępu do plików, ale są tam 3 metody, a nawet jeśli miałoby być samo __construct() to nie wiem w czym problem ?
Każdy ma swoje podejście, moje rozwiązanie wydaje się wygodne bo do wyświetlenia formularza kontaktowego wystarczy taka akcja. Pisane z palca.
A walidacja tego formularza i wysłanie wiadomości, ogranicza się do tego.
Pozdrawiam. Ten post edytował pejott 15.05.2009, 15:54:45 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 08:38 |