Meddelande

Minska
No announcement yet.

Blogga med Zend Framework - Del 7: Zend_Form och Zend_Validate

Minska
X
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • Blogga med Zend Framework - Del 7: Zend_Form och Zend_Validate

    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.
    Min blogg | Mina böcker
Working...
X