1

我有这个问题,当我加载我的表单时,验证消息出现在页面的第一次加载中,我不知道为什么..如果第一次加载操作来自 Get 而不是发帖..我很困惑..

public function inscriptionAction() {

    $form = new Application_Form_Inscription ();
    $form->submit->setLabel ( 'Inscription' );
    $this->view->form = $form;      

    if ($this->getRequest ()->isPost ()) {
        $formData = $this->getRequest ()->getPost ();
        if ($form->isValid ( $formData )) {
            // ton form est valide
            // => enregistrement des données
            // => redirection éventuelle
            $nomU = $form->getValue ( 'nomU' );
            $prenomU = $form->getValue ( 'prenomU' );
            $mailU = $form->getValue ( 'mailU' );
            $dateN = $form->getValue ( 'dateN' );
            $civilite = $form->getValue ( 'civilite' );
            $villeU = $form->getValue ( 'villeU' );
            $passW = $form->getValue ( 'passW' );
            $passw2 = $form->getValue ( 'repassW' );
            $recevoirNews = ( int ) $form->getValue ( 'recevoirNews' );
            $utilisateurs = new Application_Model_DbTable_Utilisateurs ();
            $utilisateurs->ajouterUtilisateur ( $nomU, $prenomU, $mailU, $passW, $civilite, $dateN, $recevoirNews, $villeU );

            $this->_helper->redirector ( 'index' );

        } else {
            // ton form est invalide
            // réinjecte les valeurs saisies par l'user
            // nouvel affichage du formulaire
            $form->populate ( $formData );
        }
    } else {
        // initialisation et 1er affichage du formulaire

    }
}

谢谢

4

1 回答 1

0

通过 GET 首次加载出现在页面上的表单没有任何问题。

也许最后一个 else 块(“// initialisation et 1er affichage du formulaire”)中有一些东西触发了验证?

我通常的表单生成/显示/提交流程没有明确调用$form->populate($formData);调用$form->isValid($formData)为我做到了。

我的流程通常如下所示:

public function myAction()
{
    $form = new My_Form();
    $form->setDefaults(array(
        // any defaults I need to set
    ));
    if ($this->_request->isPost()){
        if ($form->isValid($this->_request->getPost()){
            $formData = $form->getValues();
            // now write the data
        }
    }
    $this->view->form = $form;
}
于 2012-06-24T07:01:43.067 回答