Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 15-08-2009 00:51:54

__fabrice
Membre
Date d'inscription: 25-04-2007
Messages: 131

Formulaire sans addelements, en html déjà généré

Bonjour,

J'ai une question, peut etre un peu particuliere, mais j'aimerai utiliser ZF_Form uniquement pour la validation des champs, en MVC.

Mon code html est déjà present, donc pas besoin de faire un addelements. Sans le mvc, c facile, mais avec... je ne trouve pas d'exemples

Merci à tous,
Fabrice

Hors ligne

 

#2 15-08-2009 12:11:38

throrin19
Membre
Date d'inscription: 01-03-2009
Messages: 318
Site web

Re: Formulaire sans addelements, en html déjà généré

créer un formulaire que tu appelle que pour la validation avec les champs ayantqs les mêmes names et id que ton formulaire html

Hors ligne

 

#3 15-08-2009 13:09:23

__fabrice
Membre
Date d'inscription: 25-04-2007
Messages: 131

Re: Formulaire sans addelements, en html déjà généré

Salut,

Merci, mais un petit exemple serai le bienvenue smile

Fabrice

Hors ligne

 

#4 15-08-2009 14:02:47

alien7
Membre
Date d'inscription: 29-04-2007
Messages: 447

Re: Formulaire sans addelements, en html déjà généré

Voilà mon form

Code:

<?php
class Form_Register extends My_Form
{
    public function __construct($data = null, $options = null)
    {
        parent::__construct($options);

        $login = new Zend_Form_Element_Text('login');
        $email = new Zend_Form_Element_Text('email');
        $passw1 = new Zend_Form_Element_Password('passw1');
        $title = new Zend_Form_Element_Radio('title');
        $name = new Zend_Form_Element_Text('name');
        $firstname = new Zend_Form_Element_Text('firstname');
        $address = new Zend_Form_Element_Text('address');
        $compl_address = new Zend_Form_Element_Text('compl_address');
        $postcode = new Zend_Form_Element_Text('postcode');
        $city = new Zend_Form_Element_Text('city');
        $country = new Zend_Form_Element_Select('country');
        $telephone = new Zend_Form_Element_Text('telephone');
        $mobile = new Zend_Form_Element_Text('mobile');

        $this->addElements(array($login, $email, $passw1, $title, $name, $firstname, $address, $compl_address, $postcode, $city, $country, $telephone, $mobile));
        $this->addElementFilters(array('StringTrim', 'StripTags'));

        $login->setRequired(true)
        ->addValidator('Alnum', false, array(true))
        ->addValidator('StringLength', false, array(3));

        $email->setRequired(true)
        ->addFilter('StringToLower')
        ->addValidator('EmailAddress');

        $passw1->setRequired(true)
        ->addValidator('Alnum')
        ->addValidator('StringLength', false, array(8));

        $title->setRegisterInArrayValidator(false);

        $name->setRequired(true)
        ->addValidator('Alpha');

        $firstname->setRequired(true)
        ->addValidator('Alpha');

        $address->setRequired(true);

        $postcode->setRequired(true)
        ->addValidator('Digits');

        $city->setRequired(true)
        ->addValidator('Alpha');

        $country->setRegisterInArrayValidator(false);

        $telephone->setRequired(true)
            ->addValidator('Digits');

        $mobile->addValidator('Digits');
    }
}

Et voici mon helper pour afficher les messages d'erreur :

Code:

<?php
class My_View_Helper_FormError
{
    protected $_messages;
    public function formError($form)
    {
        if (isset($this->_messages) && array_key_exists($form, $this->_messages)) {
            foreach ($this->_messages[$form] as $value) {
                return "<div class='input-error'>".$value."</div> ";
            }
        }
    }

    public function setMessages($messages)
    {
        $this->_messages = $messages;
    }
}

Et dans le controller

Code:

    // Validation
    if (!$form->isValid($_POST)) {
        $this->view->values = $form->getValues();
        $this->view->getHelper('formError')->setMessages($form->getMessages());
    }

Dans la vue :

Code:

            <div>
                <label for="name">Nom : *</label>
                <input id="name" class="input" name="name" value="<?php echo $this->escape($this->values['name']); ?>" />
                <?php echo  $this->formError('name'); ?>
            </div>

Ca marche chez moi et je trouve ca plus simple que les décorateurs & co. Voilà dis moi si ca marche

Dernière modification par alien7 (15-08-2009 14:08:16)


ZF 2.3 - Twitter Bootstrap 3.2
Local: Ubuntu  -> Apache2 2.4 - MariaDB 10 - PHP 5.6

Hors ligne

 

#5 17-08-2009 23:25:04

__fabrice
Membre
Date d'inscription: 25-04-2007
Messages: 131

Re: Formulaire sans addelements, en html déjà généré

salut,

Merci pour ton code, je vais essayer çà rapidement, et je je (vous) tiens au courant smile.

Fabrice

Hors ligne

 

#6 01-10-2010 19:01:22

sevy
Membre
Date d'inscription: 17-09-2010
Messages: 37

Re: Formulaire sans addelements, en html déjà généré

Salut allien7 j'ai une question stp!au niveau de ton formulaire html si tu dispose d'un truc du genre

Code:

 <td>
        <input type="radio" name="periodicite" value="3" />3 mois
        <input type="radio" name="periodicite" value="12" checked/>1 an
        <input type="radio" name="periodicite" />Autre pr&eacute;cisez la valeur ici (mois)
        <input type="text" name="autre" readonly="readonly"/><br />    
    </td>

alors dans la création du formulaire Form_Register tu ne t'encombre pas  des différent input?tu crée un seul zend_Form_Element_Radio('periodicite')?est-ce bien cela?ou je rate quelque chose?? hmm merci à tous...

Hors ligne

 

#7 01-10-2010 20:17:11

omega2
Membre
Lieu: Boisbriand, quebec, canada
Date d'inscription: 01-04-2009
Messages: 85
Site web

Re: Formulaire sans addelements, en html déjà généré

Salut,
Si tu utilises bien le framework pour la création des formulaires, alors c'est que tu utilises le composant Zend_Form_Element_Radio qui est un dérivé de Zend_Form_Element_Multi qui accepte des couples de noms/valeurs. On a dont besoin d'un seul composant pour les trois input "periodicite".

Hors ligne

 

#8 02-10-2010 02:56:31

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: Formulaire sans addelements, en html déjà généré

@__fabrice je t'invite à regarder Zend_Filter_Input qui permet de faire se que tu veux sans avoir besoin de créer un formulaire.

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