Zend_Form har två huvudsakliga funktioner: generering av färdiga formulär samt validering av formulärdata. Följande exempel tagen ur bloggen skapar ett inloggningsformulär:

PHP-kod:
class Form_LoginForm extends Zend_Form
{
...
    
$this->setAction('/login');
    
$this->setMethod('post');

    
$username $this->createElement('text''username');
    
$username->setLabel('Username');

    
$password $this->createElement('password''password');
    
$password->setLabel('Password');

    
$submit $this->createElement('submit''submit');
    
$submit->setLabel('Login');

    
$this->addElement($username);
    
$this->addElement($password);
    
$this->addElement($submit);
...

Ovanstående formulär kan sedan visas genom:

PHP-kod:
// genererar ett inloggningsformulär med textfält för användarnamn och lösenord samt en submit-knapp
echo $this->form->render(); 
Den andra viktiga funktionen är validering av formulärdata. Du kan lätt lägga till valideringsregler som bestämmer att användarnamnet måste vara 6-20 bokstäver långt och måste innehålla minst en siffra (varför just en siffra låter vi läsaren avgöra).

Valideringen görs t.ex. på följande sätt:

PHP-kod:
if($form->isValid($_POST) )
{
    echo 
"Form is valid";
}
else
{
    echo 
"Nay!";


Zend_Validate

Zend_Validate hjälper dig med validering av formulärdata. Dessa nämndes redan ovan.

Låt oss återigen ta ett exmpel från bloggen (se klassen Form_CreateForm (blog/controllers/models/Form) ):

PHP-kod:
// skapar ett textfält för rubriken
$topic $this->createElement('text''topic');
$topic->setLabel('Topic');

// rubrikens längd: 3 eller fler tecken
$topicLengthValidator = new Zend_Validate_StringLength(3); 
// alternativt felmeddelande
$topicLengthValidator->setMessage('The topic is too short'Zend_Validate_StringLength::TOO_SHORT); 
PHP-kod:
// Vi kan ha flera validatorer till samma fält

$topicValidator = new Zend_Validate();

$topicValidator->addValidator($topicLengthValidatorfalse);
$topicValidator->addValidator($topicContentValidatorfalse);

$topic->addValidator($topicValidator); 
Själva valideringen:

PHP-kod:
...
if(
$form->isValid($data) ) // $data är $_GET eller $_POST
{
    ...

Valideringsklasserna kan också användas utan Zend_Form. Detta får dock bli en extrauppgift för läsaren.