Zend_Form è il componente introdotto dalla versione 1.5 di ZF che permette di gestire in maniera strutturata, flessibile e rapida lo sviluppo di form. Questi come sappiamo rappresentano uno degli strumenti più utilizzati per ricevere comunicazioni dagli utenti delle nostre applicazioni web: pertanto avere a disposizione uno strumento che velocizza non solo lo sviluppo del form, ma anche i controlli e le validazioni degli input, è qualcosa di estremamente comodo e apprezzato dagli sviluppatori.
Ogni programmatore web che si rispetti sa che durante lo scambio di dati questi devono essere sempre controllati, siano essi in entrata (input) o in uscita (output), per mantenere il controllo della piattaforma ed un livello di sicurezza adeguato. Zend_Filter e Zend_Validate sono due componenti indipendenti da Zend_Form ma utilizzati da quest'ultimo proprio per filtrare e validare il flusso di dati della nostra applicazione.
I meccanismi alla base del funzionamento di Zend_Form sono molto intuitivi: ogni istanza di Zend_Form viene trattata come un contenitore di altri oggetti, nella specifico di tipo Zend_Form_Element. Esiste un oggetto Zend_Form_Element per ogni elemento HTML tipico dei form, come ad esempio la selezione, la casella di testo, l'area di testo, la checkbox e così via.
La struttura di un form in ZF è dunque relativamente semplice: un oggetto Zend_Form crea un form HTML vero e proprio dando anche accesso a tutti i suoi attributi standard, e all'interno di tale oggetto è possibile definire tanti oggetti Zend_Form_Element quanti necessari per gestire gli elementi HTML dei form. Vediamo come implementare un form per il login.
In ZF l'implementazione di un form di divide in due fasi:
- "Renderizzare" il form
- Processare il form
Oltre alla divisione di cui sopra, non vi sono ulteriori linee guida per la gestione dei form, quindi siamo liberi di organizzare il nostro codice e le nostre classi come meglio si addice alla struttura e al tipo di applicativo che dobbiamo sviluppare. Possiamo ad esempio decidere di scrivere il form completamente in HTML e affidare a ZF solo la seconda fase del processo, diversamente possiamo scegliere di implementare i nostri form come oggetti di ZF, precisamente come istanze della classe Zend_Form.