1


0

zend_formの検証方法がわからない

このzendフォームを検証する方法を見つけようとしています。 わからない。

addValidator()引数は特定のバリデーターですか? それらのバリデータのどこかにリストはありますか?

forms / contact.phpにこれがあります:

クラスApplication_Form_ContactはZend_Formを拡張します\ {

public function init()
{
    $this->setAction('index/process');
    $this->setMethod('post');

    $name = new Zend_Form_Element_Text('name');
    $name->setLabel('Name:');
//  $name->addValidator('alnum');
    $name->setRequired(true);

    $email = new Zend_Form_Element_Text('email');
    $email->setLabel('Email:')->setRequired(true);

    $confirm = new Zend_Form_Element_Text('confirm');
    $confirm->setLabel('Confirm Email:')->setRequired(true);

    $phone = new Zend_Form_Element_Text('phone');
    $phone->setLabel('Phone:')->setRequired(true);

    $subject = new Zend_Form_Element_Select('subject');
    $subject->setLabel('Subject:')->setRequired(true);
    $subject->setMultiOptions(array('Performance'=>'Performance',
                                    'Workshop'=>'Workshop',
                                    'Other'=>'Other'
                                ));


    $message = new Zend_Form_Element_Textarea('message');
    $message->setLabel('Message:')->setRequired(true);
    $message->setAttrib('rows','6');
    $message->setAttrib('cols','30');

    $submit = new Zend_Form_Element_Submit('Submit');



    $this->addElements(array(   $name,
                    $email,
                    $confirm,
                    $phone,
                    $subject,
                    $message,
                    $submit
));


           $this->setElementDecorators(array
        ('ViewHelper',

        array(array('data' => 'HtmlTag'), array('tag' => 'td')),
        array('Label' , array('tag' => 'td')),
        array(array('row' => 'HtmlTag') , array('tag' => 'tr'))

        ));

    $submit->setDecorators(array('ViewHelper',

         array(array('data' => 'HtmlTag'), array('tag' => 'td')),
         array(array('emptyrow' => 'HtmlTag'), array('tag' => 'td', 'placement' => 'PREPEND')),
         array(array('row' => 'HtmlTag') , array('tag' => 'tr'))
        ));

    $this->setDecorators(array(
        'FormElements',

        array('HtmlTag' , array('tag' => 'table' , 'class' => 'formTable')),
        'Form'
    )
    );
}
}

私のコントローラーは:

public function indexAction()
{

    $this->view->form = new Application_Form_Contact();

}

public function processAction()
{
//              $this->view->form = new Application_Form_Contact();
//
     if ($this->_request->isPost()) {
                $formData = $this->_request->getPost();

            //  echo 'success';
                $this->view->data = $formdata;

            }   else {
        //        $form->populate($formData);
            }


}

私は初心者なので、おそらく私には見えないいくつかの明らかなエラーを犯しています。 私は基本的な検証をしようとしています:

  • すべてのフィールドに記入する必要があります

  • すべてのhtmlが削除されます

  • メールして確認する

  • メールフィールドは一致する必要があります

  • 電子メールは有効な形式である必要があります。

任意の助けは大歓迎です!

1 Answer


5


isValid()を試しましたか?:

$form = new forms_ContactForm();

    if ($this->_request->isPost()) {
        $formData = $this->_request->getPost();
        if ($form->isValid($formData)) {
            echo 'success';
            exit;
        } else {
            $form->populate($formData);
        }
    }

    $this->view->form = $form;

バリデーターについて:

$firstName = new Zend_Form_Element_Text('firstName');
    $firstName->setLabel('First name')
              ->setRequired(true)
              ->addValidator('NotEmpty');

    $lastName = new Zend_Form_Element_Text('lastName');
    $lastName->setLabel('Last name')
             ->setRequired(true)
             ->addValidator('NotEmpty');

    $email = new Zend_Form_Element_Text('email');
    $email->setLabel('Email address')
          ->addFilter('StringToLower')
          ->setRequired(true)
          ->addValidator('NotEmpty', true)
          ->addValidator('EmailAddress');

Zend fiormsとバリデーターについてのZendドキュメントへのリンクはここにあります。 Zend_Form_Elementを使用したフォーム要素の作成