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:
Ovanstående formulär kan sedan visas genom:
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:
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) ):
Själva valideringen:
Valideringsklasserna kan också användas utan Zend_Form. Detta får dock bli en extrauppgift för läsaren.
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);
...
}
PHP-kod:
// genererar ett inloggningsformulär med textfält för användarnamn och lösenord samt en submit-knapp
echo $this->form->render();
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($topicLengthValidator, false);
$topicValidator->addValidator($topicContentValidator, false);
$topic->addValidator($topicValidator);
PHP-kod:
...
if($form->isValid($data) ) // $data är $_GET eller $_POST
{
...
}