Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 17-01-2013 11:18:53

Paul75
Membre
Lieu: Paris
Date d'inscription: 23-12-2010
Messages: 101

zf2 et vider formulaire

Bonjour,

Pour effacer un formulaire, j'utilisais : $form-> reset(); dans Zend v1.

Comment effacer un formulaire après l'avoir validé?

Merci.

Hors ligne

 

#2 17-01-2013 14:25:41

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: zf2 et vider formulaire

Salut, normalement tu n'as pas besoin si tu ne ré-injecte pas les données depuis ton contrôleur il ne sera pas rempli (mais à confirmé je suis pas certain de ce que j'avance)

Hors ligne

 

#3 17-01-2013 14:33:44

Paul75
Membre
Lieu: Paris
Date d'inscription: 23-12-2010
Messages: 101

Re: zf2 et vider formulaire

Merci Orkin mais voila :

Code:

[lang=php]$form               = new ContactForm();
        $inputFilter        = new ContactFormInputFilter();
        $formTemplate       = 'site/site/contact';
        $formType           = \DluTwBootstrap\Form\FormUtil::FORM_TYPE_HORIZONTAL;


        $form->setInputFilter($inputFilter);
        $validData      = null;
        if ($this->request->isPost()) {
            $form->setData($this->request->getPost());
            if ($form->isValid()) {
                $formData   = $form->getData();
                $validData  = \Zend\Debug\Debug::dump($formData, 'Valid form data', false);
            }
            //die("aAA");
        }
        
        $viewModelForm      = new ViewModel();
        $viewModelForm->setVariables(array(
                                         'form'         => $form,
                                         'formType'     => $formType,
                                         'validData'    => $validData,
                                     ));
        $viewModelForm->setTemplate($formTemplate);

        return $viewModelForm;

Avec ce code cela me le fait.

J'ai aussi un autre problème avec les formulaires. En local quand j'utilise un formulaire il s'affiche correctement mais en vrai (OVH, production), c'est comme s'il ne chargeais pas les scripts.

Il me perd toute la disposition de la page, genre le menu de navigation est dans le contenu du texte (content). Il faut que je recharge une fois pour trouver la bon affichage... Une idée?

Hors ligne

 

#4 17-01-2013 15:32:05

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: zf2 et vider formulaire

Pour ton problème OVH je n'ai aucune idée.

Pour les formulaires c'est le setData qui affecte les données au formulaire et tu en as besoin pour la validation donc tu es obligé de le faire.
Par ailleurs je te recommande de faire comme ceci c'est plus propre d'utiliser les getters $form->setData($this->getRequest()->getPost()->toArray()); Le toArray n'est pas obligatoire mais il évite d'avoir à faire des traitements spécifique (si c'est en brut il appelle des méthode en plus notamment ArrayUtils::iteratorToArray donc c'est un poil plus gourmand)

La solution serait donc de faire un $form->setData(null) mais je pense que ça va planter car il attend un tableau ou un objet. Donc tu peux te faire chier à créer un tableau avec une entrée pour chaque champ de ton formulaire avec une valeur null. Le plus simple serait de retourner un ton ViewModel un nouveau formulaire, au lieu de lui donner $form tu lui donnes new ContactForm().

Tu dois même pouvoir faire mieux, c'est créer une fabrique soit sous forme d'une classe soit directement dans ton Module.php pour affecter automatiquement ton inputFilter à ton formulaire et tu le récupère via le service manager ça t'optimise un peu le code.

Par exemple :

Code:

[lang=php]
public function getServiceConfig() {
        return array(
            'shared' => array(
                'Application\Form\LoginForm' => false, // Pour ne pas récupérer la même instance avec chaque appel du serviceManager
            ),
            'factories' => array(
'Application\Form\LoginForm' => function($sm) {
                    $form = new LoginForm();
                    $form->setInputFilter(new \Application\Form\LoginFilter());
                    return $form;
                },
            }
        }
}

// Dans ton contrôleur
$form = $this->getServiceLocator()->get('Application\Form\LoginForm');

//Et si tu veux vraiment optimiser encore plus tu fais une variable protected

protected $loginForm = null;

// Le boolean $new permet de récupérer une nouvelle instance si tu veux le récupérer plusieurs instance différentes dans ta même requête (ton cas d'utilisation s'y prête normalement)
public function getLoginForm($new = false)
    {
        if (!$this->loginForm || $new) {
            $this->setLoginForm($this->getServiceLocator()->get('Application\Form\LoginForm'));
        }
        return $this->loginForm;
    }

    public function setLoginForm($loginForm )
    {
        $this->loginForm = $loginForm ;

        return $this;
    }

Ensuite pour les ViewModel tu n'es pas obligé d'aller aussi loin dans la décomposition

Code:

[lang=php]$viewModelForm = new ViewModel(array(
                                         'form'         => $form, // à remplace par new ContactForm()
                                         'formType'     => $formType,
                                         'validData'    => $validData,
                                     ));
$viewModelForm->setTemplate($formTemplate);

Tu gagnes quelques lignes, après tu as peut être une raison particulière de faire comme ça.

Hors ligne

 

#5 17-01-2013 15:37:24

Paul75
Membre
Lieu: Paris
Date d'inscription: 23-12-2010
Messages: 101

Re: zf2 et vider formulaire

Merci Orkin,

Oui c'est pas un drame que cela se remplisse. Pour le moment je me bat à savoir pourquoi mon probleme fait sur OVH et pas en local. J'ai remarqué que sur Salfari cela ne le fait pas, que sur Firefox... J'ai peux etre mal testé mais cela me fait bizarre. Et si j'enlève le formulaire cela ne se produit pas... Bizarre non ?

Hors ligne

 

#6 17-01-2013 15:41:40

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: zf2 et vider formulaire

Oui c'est bizarre. Relis mon message je l'ai édité pour t'apporter plus de précisions.

Hors ligne

 

#7 17-01-2013 15:47:31

Paul75
Membre
Lieu: Paris
Date d'inscription: 23-12-2010
Messages: 101

Re: zf2 et vider formulaire

Orkin a écrit:

Oui c'est bizarre. Relis mon message je l'ai édité pour t'apporter plus de précisions.

Oui merci.
J'ai pris l'exemple du module "DluTwBootstrap" pour le formulaire....

Hors ligne

 

#8 17-01-2013 17:25:27

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: zf2 et vider formulaire

Essaies de suivre la documentation officielle en générale il y a pas mal de bonnes pratique. Sinon tu as le bloc de Bakura (un des principal contributeurs des formulaires), son webinar a été mis en ligne hier sur le site de Zend tu devrais apprendre pas mal de chose.

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