Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 07-04-2014 15:23:50

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

Affichage et validation form avec Bootstrap et element Radio

Bonjour,

Mon problème est lors de la validation d'un formulaire.

Je bloque dessus car il ne valide jamais et ne met pas d'erreurs.

Je fais tous à la main, je crée bien un formaulaire mais après j'affiche les éléments à la main car je trouve mon formulaire assez complexe pour le faire avec des propriété des éléments....

J'ai des RADIO et qunand je met required a true il me met comme message : "The input was not found in the haystack". Dans le formulaire je met bien :
Form.php :

Code:

$this->add(array(
            'type' => 'Radio',
            'name' => 'choix_garantie',
            'attributes' => array(
                'value' => 'Formule A : Dépendance totale',
            ),
            'options' => array(
                'label' => '',
                'value_options' => array(
                    'Formule A : Dépendance totale' => 'Formule A : Dépendance totale <a href="javascript:void(0);" class="popover1" data-trigger="hover" data-html="true" data-placement="auto" data-toggle="popover" data-content="' . $this->_tabAide["choix_formuleA"] . '"><span class="glyphicon glyphicon-info-sign"></span></a>',
                    'Formule A : Dépendance totale et partielle' => 'Formule B : Dépendance totale et partielle <a href="javascript:void(0);" class="popover1" data-trigger="hover" data-html="true" data-placement="auto" data-toggle="popover" data-content="' . $this->_tabAide["choix_formuleB"] . '"><span class="glyphicon glyphicon-info-sign"></span></a>',
                ),
                'disable_inarray_validator' => false
            ),
        ));

FormInputFilter.php :

Code:

$this->add(array(
            'name' => 'choix_garantie',
            'required' => true,
            'validators' => array(
                array('name' => 'NotEmpty', 'options' => array(
                    'messages' => array(
                        NotEmpty::IS_EMPTY => 'Le champs ne doit pas être vide !',
                    ),
                )),
            ),
        ));

Une idée ?

Merci

Hors ligne

 

#2 07-04-2014 16:12:10

flobrflo
Membre
Lieu: Marseille
Date d'inscription: 26-04-2013
Messages: 376

Re: Affichage et validation form avec Bootstrap et element Radio

Je serais toi je commencerai par déclarer mon input radio différement:

Code:

[lang=php]
$this->add(array(
            'type' => 'Radio',
            'name' => 'choix_formule',
            'options' => array(
                'label' => 'mylabel',
                'value_options' => array(
                    '1' => 'Formule A : ....',
                    '2' => 'Formule B : ...',
                ),
            ),
            'attributes' => array(
                'value' => '1' //set checked to '1'
            )
        ));

je ne pense pas que les accents soient conseillé dans les values smile

Dernière modification par flobrflo (07-04-2014 16:14:47)

Hors ligne

 

#3 07-04-2014 16:30:14

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

Re: Affichage et validation form avec Bootstrap et element Radio

flobrflo a écrit:

Je serais toi je commencerai par déclarer mon input radio différement:

Code:

[lang=php]
$this->add(array(
            'type' => 'Radio',
            'name' => 'choix_formule',
            'options' => array(
                'label' => 'mylabel',
                'value_options' => array(
                    '1' => 'Formule A : ....',
                    '2' => 'Formule B : ...',
                ),
            ),
            'attributes' => array(
                'value' => '1' //set checked to '1'
            )
        ));

je ne pense pas que les accents soient conseillé dans les values smile

Bonjour,

J'ai testé avec ta méthode et cela ne change rien même message...

Hors ligne

 

#4 07-04-2014 16:33:03

flobrflo
Membre
Lieu: Marseille
Date d'inscription: 26-04-2013
Messages: 376

Re: Affichage et validation form avec Bootstrap et element Radio

Ben je te conseil de le faire qu'en même wink

Les buttons radios sont bien affichés? C'est que lorsque tu valide ton formulaire que tu a une erreur?

A quoi ressemble ton $_POST?
comment tu récupère les données et valide les infos?

Hors ligne

 

#5 07-04-2014 16:35:02

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

Re: Affichage et validation form avec Bootstrap et element Radio

flobrflo a écrit:

Ben je te conseil de le faire qu'en même wink

Les buttons radios sont bien affichés? C'est que lorsque tu valide ton formulaire que tu a une erreur?

A quoi ressemble ton $_POST?
comment tu récupère les données et valide les infos?

Bonjour,

Merci ^^

Ils sont affiché mais à la validation il me retourne le formulaire en erreur.

je récup-ère le POST avec la bonne donnée....

Hors ligne

 

#6 07-04-2014 16:43:58

flobrflo
Membre
Lieu: Marseille
Date d'inscription: 26-04-2013
Messages: 376

Re: Affichage et validation form avec Bootstrap et element Radio

Sans plus d'infos ça va pas être facile lol

je n'utilise pas "'disable_inarray_validator' => false", donc je peu pas t'aider plus, mais c'est sur que ça viens de la :
http://framework.zend.com/manual/2.0/en … ml#inarray

Hors ligne

 

#7 07-04-2014 16:45:21

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

Re: Affichage et validation form avec Bootstrap et element Radio

Salut, peux-tu nous donner ta classe formulaire et les actions de ton contrôleur qui envoient les données à la vue et celle qui valide le formulaire (généralement c'est la même) en plus des infos que flobrflo te demande. Sans ça pas facile de t'aider.

flobrflo a écrit:

je n'utilise pas "'disable_inarray_validator' => false", donc je peu pas t'aider plus, mais c'est sur que ça viens de la :
http://framework.zend.com/manual/2.0/en … ml#inarray

Oui c'est lié une petite recherche google lui aurait permis de trouver wink

Hors ligne

 

#8 07-04-2014 16:50:01

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

Re: Affichage et validation form avec Bootstrap et element Radio

Orkin a écrit:

Salut, peux-tu nous donner ta classe formulaire et les actions de ton contrôleur qui envoient les données à la vue et celle qui valide le formulaire (généralement c'est la même) en plus des infos que flobrflo te demande. Sans ça pas facile de t'aider.

flobrflo a écrit:

je n'utilise pas "'disable_inarray_validator' => false", donc je peu pas t'aider plus, mais c'est sur que ça viens de la :
http://framework.zend.com/manual/2.0/en … ml#inarray

Oui c'est lié une petite recherche google lui aurait permis de trouver wink

re,

Classe du formulaire :

Code:

<?php

namespace Site\Form;

use Zend\Form\Element;
use Zend\Form\Form;
use Zend\Captcha;
use Zend\Captcha\Image;


class DevisForm extends Form
{
public function __construct($urlcaptcha = null)
    {

        parent::__construct('');

        $this->setName('devis');
        $this->setAttribute('method', 'post');

        $this->setAttribute('novalidate', 'novalidate');

        $this->setAttribute('class', 'form-horizontal devis');


/*
         * Choix de Garantie Dépendance
         */

        $this->add(array(
            'type' => 'Radio',
            'name' => 'choix_garantie',
            'attributes' => array(
                'value' => 'Formule A : Dépendance totale',
            ),
            'options' => array(
                'label' => '',
                'value_options' => array(
                    'Formule A : Dépendance totale' => 'Formule A : Dépendance totale <a href="javascript:void(0);" class="popover1" data-trigger="hover" data-html="true" data-placement="auto" data-toggle="popover" data-content="' . $this->_tabAide["choix_formuleA"] . '"><span class="glyphicon glyphicon-info-sign"></span></a>',
                    'Formule A : Dépendance totale et partielle' => 'Formule B : Dépendance totale et partielle <a href="javascript:void(0);" class="popover1" data-trigger="hover" data-html="true" data-placement="auto" data-toggle="popover" data-content="' . $this->_tabAide["choix_formuleB"] . '"><span class="glyphicon glyphicon-info-sign"></span></a>',
                ),
                'disable_inarray_validator' => false
            ),
        ));

Filter :

Code:

<?php

namespace Site\Form;

use Zend\InputFilter\InputFilter;
use Zend\Validator\NotEmpty;
use Zend\Validator\StringLength;
use Zend\Validator\EmailAddress;

use Zend\Captcha;
use Zend\Captcha\Image as CaptchaImage;

use Zend\Captcha\AbstractAdapter;
use Zend\Captcha\AbstractWord;


class DevisFormInputFilter extends InputFilter {

    public function __construct() {
/*
         * Choix de Garantie Dépendance
         */
        $this->add(array(
            'name' => 'choix_garantie',
            'required' => true,
            'validators' => array(
                array('name' => 'NotEmpty', 'options' => array(
                    'messages' => array(
                        NotEmpty::IS_EMPTY => 'Le champs ne doit pas être vide !',
                    ),
                )),
            ),
        ));

Action :

Code:

public function formdevisAction()
    {
        $form = new DevisForm($this->getRequest()->getBaseUrl() . '/data/captcha/');
        $form->setInputFilter(new DevisFormInputFilter());

        $request = $this->getRequest();
        if ($request->isPost()) {
            $form->setData($request->getPost());

            if ($form->isValid()) {die("FORM VALIDE");
                $this->renderer = $this->getServiceLocator()->get('ViewRenderer');
                $html = $this->renderer->render('site/tpl/devis', null);


                $formDatas = $form->getData();
                foreach ($formDatas as $key => $value) {
                    if (is_string($value))
                        ${$key} = utf8_decode($value);
                    else
                        ${$key} = $value;

                    $html = str_replace("[[" . $key . "]]", $value, $html);
                }

                //echo $html;die;

                $getContact = $this->getServiceLocator()->get('mail.contact');

                $transport = $this->getServiceLocator()->get('mail.transport');
                $email = new Email($transport, $getContact['from']);
                $email->envoyer($getContact['to'], "Envoi d'un message du site", $html);

                return $this->redirect()->toRoute('site', array('action' => 'sendsuccess'));
            }
        }


        return array(
            "form" => $form
        );
    }

Hors ligne

 

#9 07-04-2014 17:03:29

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

Re: Affichage et validation form avec Bootstrap et element Radio

Ca pique les yeux sad.

Pour ton formulaire, implements l'interface InputFilterProviderInterface et met ton inputFilter directement dans le formulaire (dans la méthode que tu vas devoir implémenter, la doc ZF2 explique comment faire).

Si tu retires cette ligne

Code:

[lang=php]'disable_inarray_validator' => false

de ton formulaire ça donne quoi ?

Concernant les routes j'en est un peu marre de me répéter ...

Hors ligne

 

#10 07-04-2014 17:05:53

flobrflo
Membre
Lieu: Marseille
Date d'inscription: 26-04-2013
Messages: 376

Re: Affichage et validation form avec Bootstrap et element Radio

Orkin a écrit:

Si tu retires cette ligne

Code:

[lang=php]'disable_inarray_validator' => false

de ton formulaire ça donne quoi ?

Wé, à priori tu n'en a pas besoin.

Hors ligne

 

#11 07-04-2014 17:10:01

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

Re: Affichage et validation form avec Bootstrap et element Radio

que je mette cette ligne ou pas cela ne change rien ....

Hors ligne

 

#12 07-04-2014 17:14:13

flobrflo
Membre
Lieu: Marseille
Date d'inscription: 26-04-2013
Messages: 376

Re: Affichage et validation form avec Bootstrap et element Radio

Essai d'implémenter l'inputfilter comme Orkin te l'a conseillé,
une fois ça propre, si tu à toujours l'erreur envois nous ton $_POST.

EDIT :  ou ton $request->getPost() hein (^^)

Dernière modification par flobrflo (07-04-2014 17:15:01)

Hors ligne

 

#13 07-04-2014 17:25:00

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

Re: Affichage et validation form avec Bootstrap et element Radio

si je comprends bien d'après la doc Zend 2 je lis que le inputFilter se fait au model de donnée ?

Je me trompe ?

[EDIT] Hors mois pour le devis (formulaire) je n'ai pas de base de donnée car les résultats seront envoyés par email....

Dernière modification par Paul75 (07-04-2014 17:26:30)

Hors ligne

 

#14 07-04-2014 17:28:50

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

Re: Affichage et validation form avec Bootstrap et element Radio

Non le inputFilter se fait en fonction de ton formulaire. D'ailleurs pour que ça soit propre il aurait fallu que ça soit à ton fieldset mais tu es déjà perdu donc on va pas en rajouter une couche wink.
L'inputFilter sert uniquement à valider les données de ton formulaire et les filtrer. Ca s'enregistre pas tout seul hein wink.

Hors ligne

 

#15 07-04-2014 17:30:45

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

Re: Affichage et validation form avec Bootstrap et element Radio

J'ai jamais dis que cela enregistre tous seul hein ^^

Je suis perdu dans Zend 2 ..... J'apprends petit à petit. J'essaye de voir sur le site de Zend.....

Que je me perde pas :

dans le form : class DevisForm extends Form implements InputFilterProviderInterface

/**
     * @return array
     */
    public function getInputFilterSpecification()
    {
        return array(
            'civilite_adherent' => array(
                'required' => true,
                'validators' => array(
                    array('name' => 'NotEmpty', 'options' => array(
                        'messages' => array(
                            NotEmpty::IS_EMPTY => 'Le champs ne doit pas être vide !',
                        ),
                    )),
                ),
            ),

            'civilite_conjoint' => array(
                'required' => false
            ),
        );
    }

Dernière modification par Paul75 (07-04-2014 17:34:47)

Hors ligne

 

#16 07-04-2014 17:34:29

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

Re: Affichage et validation form avec Bootstrap et element Radio

Bah tu parles de modèles de données et tout et c'est pas super clair :p. Donc non ça dépend pas que de ça. Ca n'a pas de sens si tu as un champ qui ne peut pas être null et dans ton formulaire tu le mets pas en requis ça va planter.

Hors ligne

 

#17 09-04-2014 13:41:16

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

Re: Affichage et validation form avec Bootstrap et element Radio

Bonjour,

J'ai donc fais comme tu m'a demandé Orkin (il me semble) J'ai mis les validateurs dans getInputFilterSpecification et cela me donne  toujours l'erreur (The input was not found in the haystack)....


Cela ne se produit que sur les RADIO....

Je ne vois pas d'où cela viendrais..... Dans ZF1 on sesactivais le Array des radio et cela fonctionnais ....

Merci

Hors ligne

 

#18 09-04-2014 14:15:50

flobrflo
Membre
Lieu: Marseille
Date d'inscription: 26-04-2013
Messages: 376

Re: Affichage et validation form avec Bootstrap et element Radio

si tu met un input text avec le même name et value ça mets pas d'erreur?

Hors ligne

 

#19 09-04-2014 14:19:18

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

Re: Affichage et validation form avec Bootstrap et element Radio

Là je sèche :s. J'ai jamais eu à désactiver les array etc ... Là en gros ça veut dire que la valeur qui est saisie (cochée) n'est pas dans la liste des valeurs autorisées. Mais pourquoi ça te fait ça je vois pas là hmm

Hors ligne

 

#20 09-04-2014 14:33:16

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

Re: Affichage et validation form avec Bootstrap et element Radio

Orkin justement c'est quand il est pas coché que cela se produit .... Quand c'est coché cela marche bien....

Merci

Hors ligne

 

#21 09-04-2014 14:36:19

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

Re: Affichage et validation form avec Bootstrap et element Radio

Ah hmm. Peut être une piste met un required => false dans le getInputFilterSpecification pour choix_garantie

Hors ligne

 

#22 09-04-2014 14:37:38

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

Re: Affichage et validation form avec Bootstrap et element Radio

oui mais dans ce cas le champ ne sera plus obligatoire ? Alors que je le veux obligatoire ?

Ou dans ce cas je dois le cocher un par défaut ?

Merci

Hors ligne

 

#23 09-04-2014 14:52:51

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

Re: Affichage et validation form avec Bootstrap et element Radio

Bah non mais faut savoir ce que tu veux ... En fait t'as pas de problème, si c'est un champs requis et que tu soumets le formulaire c'est normal qu'il ne soit pas validé et qu'il te dise que le choix saisi ne corresponde pas à ceux possible.

Hors ligne

 

#24 09-04-2014 15:36:06

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

Re: Affichage et validation form avec Bootstrap et element Radio

oui mais dans ce cas le message apparait oki mais il en apparait 2 ......

Bref j'ai résolu le problème en mettant une valeur par défaut ....

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