Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Formularze
Forum PHP.pl > Forum > PHP > Pro > Archiwum Pro
Ociu
Pisząc CMS nadchodzi taki moment, że trzeba wkońcu zacząć tworzyć formularze.

Mam pare pomysłów, ale mimo wszystko chciałbym poznać Wasze pomysły na temat:
Jak poprzez php tworzyć formularze i jak je walidować.

Co do sprawdzania formularzy znalazłem ostatnio skrypt napisany przez Nookie do walidacji formularzy dzięki JavaScript. Zapewne jego użyję, ale jeśli macie inny pomysły to czekam z niecierpliwością.

Co do samych formularzy. Było wiele pomysłów.
  • Jest główna kalsa FormController, a każdy input, select etc. jest osobnym obiektem, dodajemy je do Controllera i renderujemy
  • mamy jedną wielką klasę FormController, gdzie metody to każdy input, select. Każda opcja ma: dodawanie, tworzenie inputa i sprawdzanie, czy taki input istnieje
  • FormController na modłe WACT

CZekam na Wasze pomysły !
Ludvik
Ja wyodrębniam wszystkie rodzaje pól w klasach, następnie tworzę same pola, jako instancje tych klas. Dalej, dodaję je do obiektu klasy Form, który odpowiada za cały formularz. Jeżeli chcę wyświetlić formularz, to mogę zrobić to ręcznie (z poziomu szablonów), albo stworzyć obiekt implementujący interfejs FormRenderer. Całe wyświetlanie sprowadza się do dokonania niejawnego rzutowania obiektu na string. Wszystkie klasy nieabstrakcyjne posiadają przeciążoną metodę __toString.

Walidacja najlepiej jak będzie dwuetapowa. Wpierw miło by było, gdyby sprawdzić dane po stronie klienta. Oszczędzimy pracy serwerowi w większości przypadków, kiedy dane są nieprawidłowe. Dla złośliwych i ludzi z wyłączonym JS mamy drugi etap, tym razem walidacja po stronie serwera, która jest zabezpieczeniem przed ominięciem JavaScriptu.

Wypadało by zgrabnie połączyć klasy zajmujące się generowaniem formularzy z walidacją. Po stronie serwera mam klasy implementujące interfejs FormValidator. Po stronie klienta nie rozwiązałem problemu. Jak na razie zostawiam sobie furtkę i daję przypisać zdarzenia do wszystkich obiektów.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.