1

この問題があります。フォームを読み込むと、ページの最初の読み込みに検証メッセージが表示されます。理由はわかりません。これが私のアクションです。最初の読み込みアクションがGetではなく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 に答える