Technologie i narzędzia: język PHP 5, Java, JavaScript, Python, system Zend Framework, Django, biblioteka jQuery, Smarty, platforma Eclipse, MySQL, SVN, CVS, UML, Firefox.
WebProgramming - wszystko o serwisach internetowych
O serwisach internetowych.
[php] Obsługa fomularzy w Zend Framework.
Chciałbym Wam przedstawić moją propozycję obsługi formularzy w systemie Zend Framework (i nie tylko), istnieje kilka rozwiązań tego powszechnego problemu (na przykład w dziale proposal), ale niestety nie są wg mnie godne uwagi.
Wg mnie bibliotekę do obsługi formularzy powinno cechować:
- wsparcie dla walidatorów oraz filtrów
- możliwość korzystania z biblioteki poza Zend Framework
- elastyczność rozwiązania oraz prostota
Nie powinna natomiast zawierać:
- generowanie kodu HTML
- elementów dotyczących prezentacji pól formularza oraz jego innych elementów
Kliknij więcej, aby zobaczyć wynik - bibliotekę Fasic_Form.
Przykład wykorzystania omawianej biblioteki przedstawię na podstawie prostego skryptu PHP - nie wykorzystując do tego celu Zend Framework. Skrypt ten można podzielić na trzy części:
Pierwsza część - konfiguracja formularza:
W pierwszej kolejności tworzymy konfigurację formularza, czyli określamy listę jego pól, walidatorów oraz filtrów. Przykład
-
// Stwórz obiekt formularza i ustal listę dostępnych pól.
-
// Pole email jest wymagane - dodaj walidator
-
$form->addValidator(new Fasic_Form_Validator_Required(‘email’, ‘Błąd…’))
-
// Pole email musi być poprawne - dodaj walidator
-
->addValidator(new Fasic_Form_Validator_Email(‘email’, ‘Błąd..’))
-
// Pole id musi być typu int - dodaj filtr, który to wymusi
-
->addFilter(new Fasic_Form_Filter_Int(‘id’))
-
// Pole content nie może zawierać znaków HTML - dodaj filtr
-
->addFilter(new Fasic_Form_Filter_NoTags(‘content’));
Druga część - wykorzystanie:
Wcześniej stworzony obiekt formularza możemy teraz wykorzystać w celu zwalidowania danych przesyłanych od użytkownika, na przykład:
-
// Zainicjuj dane - jeżeli zmienna $_POST nie jest pusta zainicjuj dane oraz uruchom walidatory i filtry dla pól.
-
$form->populate($_POST);
-
// Jeżeli formularz jest niepoprawny
-
if(! $form->isValid()) {
-
// Zwróć pierwszy błąd, można też skorzystać z metody $form->getErrors().
-
$view->error = $form->getError();
-
}
-
$view->form = $form;
Najważniejszą metodą jest w tej części metoda populate() - uruchamia ona (w miarę potrzeby) walidatory oraz filtry dla danego formularza. Zmienna $view oznacza “widok” - zakładam, iż jej atrybuty są widoczne w widoku pod zmienną $this.
Trzecia część - widok:
-
error ?>
-
<form method="post">
-
<input name="email" value="<?= $this->form->email ?>" />
-
<input name="id" type="hidden" value="<?= $this->form->email ?>" />
-
<textarea name="content"><?= $this->form->content ?></textarea></form>
Napisz komentarz