Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 02-06-2009 15:50:19

Glaz
Nouveau membre
Date d'inscription: 02-06-2009
Messages: 1

[Zend_Form][1.7.5] Disparition de champs

Bonjour ,
j'ai un problème sur mon formulaire.

Le cas se présente lorsque je l'envoi, mais qu'il n'est pas valide.
Le formulaire est alors réaffiché avec les erreurs signalées, mais les champs "pseudo" et "mail" ont disparu.

La particularité de ces champs est qu'ils sont créés grâce à la classe "Verif" qui hérite de "Zend_Form_Element_Xhtml".

Le formulaire :

Code:

<?php

require_once 'Zend/Form.php';

class Inscriptionform extends Zend_Form
{
    public function __construct($option=null)
    {
        parent::__construct($option=null);

        $this->setAction('')
        ->setMethod('post');




                $pseudo = new Verif('personne_identifiant');   //  ce champ disparait
        $pseudo->setValue('
        <div style="position:relative;left:-40px;" ><label for="personne_identifiant" class="required">Pseudonyme</label></div>
        <span>
        <input type="text" name="personne_identifiant" id="personne_identifiant" value="" onchange="verifpseudo(this.value);"></span>
        <span>&nbsp;</span>
        <span id="dispopseudo"></span>');


        $mail = new Verif('personne_email');  //  ce champ disparait
        $mail->setValue('<div style="position:relative;left:-40px;"><label for="personne_email" class="required">Mail</label></div>
        <span>
        <input type="text" name="personne_email" id="personne_email" value="" onchange="verifmail(this.value);"></span>
        <span>&nbsp;</span>
        <span id="dispomail"></span>
        ');

        $password = new Zend_Form_Element_Password('personne_password');
        $password->setLabel('Mot de passe')
        ->addValidator('stringLength', false, array(1,50))
        ->setRequired(true);

        $password2 = new Zend_Form_Element_Password('personne_password2');
        $password2->setLabel('Retapez votre mot de passe')
        ->addValidator('stringLength', false, array(1,50))
        ->setRequired(true);

        $nom = new Zend_Dojo_Form_Element_TextBox('personne_nom');
        $nom->setLabel('Nom')
        ->addValidator('stringLength', false, array(1,50))
        ->setRequired(true)
        ->setValue('test3');

        $prenom = new Zend_Form_Element_Text('personne_prenom');
        $prenom->setLabel('Prenom')
        ->addValidator('stringLength', false, array(1,50))
        ->setRequired(true)
        ->setValue('test3');

        $adresse = new Zend_Form_Element_Text('personne_adresse1');
        $adresse->setLabel('Adresse')
        ->addValidator('stringLength', false, array(1,100))
        ->setRequired(true)
        ->setValue('test3');

        $adresse2 = new Zend_Form_Element_Text('personne_adresse2');
        $adresse2->setLabel('Adresse secondaire')
        ->addValidator('stringLength', false, array(1,100));

        $codepostal = new Zend_Form_Element_Text('personne_codepostal');
        $codepostal->setLabel('Code postal')
        ->addValidator('regex', true , array('/^[0-9]{5}$|^$/'))
        ->getValidator('regex')
        ->setMessage("Entrez un code postal");

        $ville =  new Zend_Form_Element_Text('personne_ville');
        $ville->setLabel('Ville')
        ->addValidator('stringLength', false, array(1,100))
        ->setRequired(true)
        ->setValue('rennes');

        $objPays = new Techpays();
        $lstpays = array();
        foreach ($objPays->techpays_lst() as $val)
        {
            $lstpays[$val['techpays_id']] = $val['techpays_lib'] ;
        }


        $pays = new Zend_Form_Element_Select('personne_pays');
        $pays->setMultiOptions($lstpays)
        ->setLabel('Pays')
        ->setRequired(true)
        ->setValue('france');

        $langue =  new Zend_Form_Element_Text('personne_langue');
        $langue->setLabel('Langue')
        ->addValidator('stringLength', false, array(1,50))
        ->setRequired(true);

        $telmobile =  new Zend_Form_Element_Text('personne_telmobile');
        $telmobile->setLabel('Tel mobile')
        ->addValidator('stringLength', false, array(1,50));

        $telfixe =  new Zend_Form_Element_Text('personne_telfixe');
        $telfixe->setLabel('Tel fixe')
        ->addValidator('stringLength', false, array(1,50));

        $fax =  new Zend_Form_Element_Text('personne_fax');
        $fax->setLabel('Fax')
        ->addValidator('stringLength', false, array(1,50));

        $datenaiss = new Zend_Dojo_Form_Element_DateTextBox('personne_datenaissance');
        $datenaiss->setLabel('Date de naissance');

        $submit = new Zend_Form_Element_Submit('valider');
        $submit->setLabel('Valider');

        $this->addElement($pseudo);
        $this->addElement($mail);
        $this->addElement($password);
        $this->addElement($password2);
        $this->addElement($nom);
        $this->addElement($prenom);
        $this->addElement($adresse);
        $this->addElement($adresse2);
        $this->addElement($codepostal);
        $this->addElement($ville);
        $this->addElement($pays);
        $this->addElement($langue);
        $this->addElement($telmobile);
        $this->addElement($telfixe);
        $this->addElement($fax);
        $this->addElement($datenaiss);
        $this->addElement($submit);


    }



}

?>

La classe Verif :

Code:

<?php
require_once 'Zend/Form/Element/Xhtml.php';

class Verif extends Zend_Form_Element_Xhtml
{

    /**
     * Default form view helper to use for rendering
     * @var string
     */
    public $helper = 'formNote';

    public function init(){
        //LOGGER
          $this->logger = Zend_Registry::get('logger');
          $this->logger->debug('****Verif.php****');
    }
}
?>

Avant l'envoi, voici les champs dans le source de la page affichée :

Code:

<dd>

        <div style="position:relative;left:-40px;" ><label for="personne_identifiant" class="required">Pseudonyme</label></div>
        <span>
        <input type="text" name="personne_identifiant" id="personne_identifiant" value="" onchange="verifpseudo(this.value);"></span>
        <span>&nbsp;</span>
        <span id="dispopseudo"></span></dd>
<dt>&nbsp;</dt>

<dd>
<div style="position:relative;left:-40px;"><label for="personne_email" class="required">Mail</label></div>
        <span>
        <input type="text" name="personne_email" id="personne_email" value="" onchange="verifmail(this.value);"></span>
        <span>&nbsp;</span>
        <span id="dispomail"></span>
        </dd>

Après l'envoi et dans le cas ou le formulaire n'a pas été validé, il est donc réaffiché, voici les champs dans le source de la page réaffiché :

Code:

<dt>&nbsp;</dt>
<dd>
</dd>
<dt>&nbsp;</dt>
<dd>
</dd>

Lors de ce réaffichage, j'ai bien une trace dans ma log comme quoi la classe Verif a été instanciée.

Code:

*f5c4fd22b901cce7ae9082180a942e11*ID* 2009-06-02T15:39:26+02:00 DEBUG (7): ****Verif.php**** - /xxx.com/public/en/default/inscription/index
*f5c4fd22b901cce7ae9082180a942e11*ID* 2009-06-02T15:39:26+02:00 DEBUG (7): ****Verif.php**** - /xxx.com/public/en/default/inscription/index

Je suis débutant en POO , pardonnez moi si je suis un peu évasif.
Merci.

Dernière modification par Glaz (02-06-2009 16:11:38)

Hors ligne

 

#2 04-06-2009 10:33:56

Jean-Marc Rigade
Membre
Lieu: Rennes
Date d'inscription: 25-09-2007
Messages: 314

Re: [Zend_Form][1.7.5] Disparition de champs

J'ai le même problème en utilisant la classe Zend_Form_Element_Xhtml

Comment utilisez vous cette classe ?

Hors ligne

 

#3 19-06-2009 10:55:11

ami
Membre
Lieu: Nantes
Date d'inscription: 28-03-2007
Messages: 45
Site web

Re: [Zend_Form][1.7.5] Disparition de champs

Bonjour, j'ai le même problème avec 1.8.3 et l'astuce indiqué ici http://zfsnippets.com/snippets/view/id/50

Le html s'affiche correctement mais DISPARAIT si le formulaire n'est pas valide !!!

je tourne en rond.

Merci de votre aide si vous avez trouvé la solution.
Cordialement
Ami

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages