0
    UserController.php
    -------------

    editAction (method)
    ----------

    $UserInfo = array(
            'hdn_uid'=>$UserResult['user_id'],
            'username'=>$UserResult['user_name'],
            'firstname'=>$UserResult['first_name'],

        );

    $form->populate($UserInfo);
    $this->view->form = $form;


    Forms/userEdit.php
    ------------------

    $elementDecoration = array(
                'ViewHelper',
                'Description',
                'Errors',
                array(array('data'  => 'HtmlTag'), array('tag' => 'td')),
                array('Label', array('tag' => 'td', 'placement' => 'prepend')),
                array(array('row'   => 'HtmlTag'), array('tag' => 'tr')),
            );

    $hdn_id = new Zend_Form_Element_Hidden('hdn_uid');
            $hdn_id->addFilter('Int')
                   ->removeDecorator('label')
                       ->removeDecorator('HtmlTag');        

            $this->setName('login');
            $this->setDecorators($formDecoration);

            $username = new Zend_Form_Element_Text('username'); //Note this username and in conroller  $UserInfo arr 'username' matched so in the text fields existing username is populated from table.
            $username->setLabel('Username')
                    ->setDecorators($elementDecoration)
                    ->setRequired(true)
                    ->addFilter('StripTags')
                    ->addFilter('StringTrim');

$submit = new Zend_Form_Element_Submit('submit');
$submit->setDecorators($buttonDecoration);
$this->addElements(array($hdn_id,$username,$submit));

問題

   Server side validation not working, due to some mistake in the above snippet

詳細情報

 Server side validation not working in the above code, when i clear the username and if i submited the button then program does not validated the field, instead it updated the empty value into table.

これと同じコードがユーザー追加フォームで機能します。ただし、編集フォームでは機能しません。

4

2 に答える 2

0

これは、ZendFramework1でフォームを処理するためのほぼ標準的なワークフローです。

public function editAction(){
    //set up the form
    $form = new Application_Form_UserEdit();
    $form->setMethod('post');
    $form->setAction('/user/edit');
    //test for POST array
    if ($this->getRequest()->isPost()) {
        //validate form
        if ($form->isValid($this->getRequest()->getPost()) {
            //get validated and filtered form values
            $data = $form->getValues();
            //do some stuff
        } // if form not valid it should redisplay with current data automatically
    } else {
        //if not POST display empty form
        $this->view->form = $form;
    }
}

これがお役に立てば幸いです。

于 2013-03-28T12:16:58.833 に答える
0

この行は私の問題を修正しました

if($ form-> isValid($ this-> getRequest()-> getPost())

于 2013-03-29T04:40:54.813 に答える