Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 14-09-2009 19:24:46

daverck
Membre
Date d'inscription: 14-09-2009
Messages: 30

[Résolu][Zend_Form][1.9] rendu d'un champ <input type="text"

Bonjour,

J'ai un petit soucis avec mon élément captcha qui est apparu suite à des modifications mais dont je ne parviens pas à trouver la cause.

Le problème c'est qu'il me rend à chaque fois un champ de type :

Code:

<input type="text" name="captcha" id="captcha" value="632b95caa5d9e2bfa8ca42dce9596150" class="fixed">

ce champ est évidement censé être caché (c'est difficile à masquer avec du css !)

donc sans plus attendre voici mon formulaire :

Code:

<?php

class Default_Form_LoginGuest extends Zend_Form
{
    public function init()
    {
        // Set the method for the display form to POST
        $this->setMethod('post')
             ->setAction('index')
              ->setDescription('formulaire de login')
             ->setEnctype(Zend_Form::ENCTYPE_URLENCODED)
             ->setLegend('login')
             ->setName("login_guest_form");
        

        // Add a login element
        $this->addElement('text', 'login', array(
                                                'label'      => 'Login name :',
                                                'required'   => false,
                                                'filters'    => array('StringTrim',
                                                                        'StringToLower'),
                                                'validators' => array(array('StringLength', false, array(6, 20))),
                                                //'ErrorMessages' => array('required'=>'Element requis'),
                                                //'description'    => 'Enter your login name',
                                                'id'            => 'login',
                                                'class'            => 'fixed',
                                                    )
                            );

                            
        // Add a password element
        $this->addElement('password', 'password', array(
                                                        'label'      => 'Secret password :',
                                                        'required'   => false,
                                                        'filters'    => array('StringTrim'),
                                                        'validators' => array(array('StringLength', false, array(6, 20))),
                                                    //    'ErrorMessages' => array('required'=>'Element requis'),
                                                        //'description'    => 'Enter your secret password',
                                                        'id'            => 'password',
                                                        'class'            => 'fixed',
                                                    )
                         );

                         
        $this->addElement('checkbox', 'remember_me', array(
                                                        'label'      => 'Remember me :',
                                                        'required'   => false,
                                                        //'description'    => 'Remeber your login and password ?',
                                                        'id'            => 'remember_me',
                                                        'class'            => 'fixed',        
                                                    )
                         );
                         
                         
        // Add a captcha
        $this->addElement('captcha', 'captcha', array(
                                                        'label'      => '5 letters displayed :',
                                                        //'description'    => 'Enter the captcha below for anonymous surfing',
                                                        'class'            => 'fixed',
                                                        'required'   => false,
                                                        'validators' => array(array('StringLength', false, array(5, 5))),
                                                    //    'ErrorMessages' => array('required'=>'Element requis'),
                                                        'captcha'    => array(
                                                                                'captcha' => 'Image', 
                                                                                'wordLen' => 5, 
                                                                                'timeout' => 300,
                                                                                'width'      => 106,
                                                                                'height'  => 35,
                                                                                'dotNoiseLevel' => 50,
                                                                                'lineNoiseLevel' => 3,
                                                                                'font' => APPLICATION_PATH . '/../public/fonts/arial.ttf',
                                                                                'fontSize' => 25,
                                                                                'imgDir' => APPLICATION_PATH . '/../public/img/captcha/',
                                                                                'imgUrl' => '/img/captcha/',
                                                                            )
                                                        )
                       );
        
                       
        // Add the submit button
        $this->addElement('submit', 'submit_login_guest', array(
                                                    'ignore'       => true,
                                                    'label'     => 'OK',
                                                    'class'        => 'fixed',
                                                    //'description'    => 'Clic here to validate the authentication'
                                                    )
                        );

        // And finally add some CSRF protection
        $this->addElement('hash', 'csrf_login_guest', array(
                                                'ignore' => true,
                                                    )
                        );
        
        // Here comes the display group
        
        $this->addDisplayGroup(    array('captcha'),
                                'loginwithcaptcha',
                                array()
                              );
                                      
        $this->addDisplayGroup(    array('login','password','remember_me'),
                                'loginwithpassword',
                                array()
                              );
        
/*#######################################*/                       
/*###### Here comes the decorators ######*/
/*#######################################*/
        
         $this->clearDecorators();
                              
        /*Set form Decorators*/
        $this->setDecorators(array(
                                    array('FormElements'),
                                    array('HtmlTag', array('tag' => 'div','class' => 'fixed')),
                                      array('Form')
                                      ),
                              array(
                                      null
                                  ),
                              array(
                                      null
                                  )
                            );

        /*Set Commons group Decorators*/     
        $this->setDisplayGroupDecorators(array(
                                                array('FormElements')                                             ),
                                             array(
                                                 null
                                                 ),
                                             array(
                                                 null
                                                 )
                                         );

        /*Add Specific group Decorators*/
        $this->getDisplayGroup('loginwithpassword')->addDecorators(array(
                                                                        array('Fieldset', array('class' => 'fixed',
                                                                                                'legend' => 'login with password')
                                                                         )
                                                                    ));

                                                
        $this->getDisplayGroup('loginwithcaptcha')->addDecorators(array(
                                                                        array('Fieldset', array('class' => 'fixed',
                                                                                                'legend' => 'login with captcha')
                                                                        )
                                                                    ));

        /*Set form commons elements Decorators*/                                                
        $this->setElementDecorators(array(
                                        array('ViewHelper'),
                                        array('Label', array('class' => 'fixed')),
                                         //array('Errors'),
                                         //array('Description', array('tag' => 'p', 'class' => 'description')),
                                         //array('HtmlTag', array('tag' => 'dd')),
                                         //array('Label', array('tag' => 'dt')),
                                         //array('Label', array('tag' => 'dl')),
                                         )
                                 );

        /*Set form specific elements Decorators*/
        //$this->getElement('login')->addDecorators(array(
        //                                 array('Label', array('class' => 'fixed'))
        //                                         )
        //                                 );

    }
}

Ca doit être une histoire de décorateur qui écrase le type par défaut ... enfin je sais pas

est-ce quelqu'un peut me conseiller svp ?

Dernière modification par daverck (16-09-2009 20:31:19)

Hors ligne

 

#2 14-09-2009 22:30:36

stealth35
Membre
Date d'inscription: 30-08-2009
Messages: 29

Re: [Résolu][Zend_Form][1.9] rendu d'un champ <input type="text"

si tu rajoutes ?

'style' => 'display:none;'

Hors ligne

 

#3 14-09-2009 23:26:32

daverck
Membre
Date d'inscription: 14-09-2009
Messages: 30

Re: [Résolu][Zend_Form][1.9] rendu d'un champ <input type="text"

à l'élément Captcha ?

J'ai essayé sans succès mais c'est une piste.
Pourtant dans les tutoriel qu'on trouve sur internet il semble pas mettre d'option supplémentaire...

Je continue de me documenté sur zend captcha voir si c'est la que je me suis foiré !

merci de ton aide smile

si quelqu'un d'autre a une solution faites le moi savoir !
(Je m'abonne à la discussion pour pas louper les messages cette fois ci

Hors ligne

 

#4 14-09-2009 23:31:03

stealth35
Membre
Date d'inscription: 30-08-2009
Messages: 29

Re: [Résolu][Zend_Form][1.9] rendu d'un champ <input type="text"

ouai direct sur captcha,   ou alors essaye

'style' => 'visibility:hidden;'

Code:

$this->addElement('captcha', 'captcha', array(
                                                        'label'      => '5 letters displayed :',
                                                        //'description'    => 'Enter the captcha below for anonymous surfing',
                                                        'class'            => 'fixed',
                                                        'style' => 'visibility:hidden;'
                                                        'required'   => false,
                                                        'validators' => array(array('StringLength', false, array(5, 5))),
....

Dernière modification par stealth35 (14-09-2009 23:31:53)

Hors ligne

 

#5 14-09-2009 23:40:40

daverck
Membre
Date d'inscription: 14-09-2009
Messages: 30

Re: [Résolu][Zend_Form][1.9] rendu d'un champ <input type="text"

Ok

En fait les deux méthodes que tu m'as proposé rende tout les champs de type input "invisible" (on supprimé)

mais comment est-ce que je peux choisir seulement le bon ? avec les css ?

sûrement qu'il y a moyen, ce qui me chagrine c'est qu'il me semble qu'il existe une méthode plus propre, via les décorateurs je dirais parce-que je n'ai pas rajouter d'option supplémentaire à mon élément captcha qui pourrait changer ca hmm

Hors ligne

 

#6 14-09-2009 23:46:47

stealth35
Membre
Date d'inscription: 30-08-2009
Messages: 29

Re: [Résolu][Zend_Form][1.9] rendu d'un champ <input type="text"

c'est bizar ca devrai unqiuement agir sur captcha

<input type="text" id="captcha" style="display:none;" />

sinon il suffirais d'ajouter une  class CSS

'class' => 'fixed hidden'

et dans le CSS  faire

.hidden{
display:none;
}

regarde ce que t'as dans ton CSS au niveau du   "fixed" deja

Hors ligne

 

#7 14-09-2009 23:55:25

daverck
Membre
Date d'inscription: 14-09-2009
Messages: 30

Re: [Résolu][Zend_Form][1.9] rendu d'un champ <input type="text"

voilà mon le rendu du formulaire si ça peut t'aider :

Code:

<form id="login_guest_form" enctype="application/x-www-form-urlencoded" method="post" action="index"><div class="fixed">

<input type="submit" name="submit_login_guest" id="submit_login_guest" value="OK" class="fixed">

<input type="hidden" name="csrf_login_guest" value="dacd262d9e87342f8f346fd0b2b1f563" id="csrf_login_guest">
<fieldset id="fieldset-loginwithcaptcha" class="fixed"><legend>login with captcha</legend>

<label for="captcha-input" class="fixed required">5 letters displayed :</label>

<img width="106" height="35" alt="" src="/img/captcha/abe883e165da98e425d15eb70ad2cf1a.png"/><br/>
<input type="hidden" name="captcha[id]" value="abe883e165da98e425d15eb70ad2cf1a" class="fixed" id="captcha-id">
<input type="text" name="captcha[input]" id="captcha-input" value="" class="fixed">
<input type="text" name="captcha" id="captcha" value="abe883e165da98e425d15eb70ad2cf1a" class="fixed"></fieldset>
<fieldset id="fieldset-loginwithpassword" class="fixed"><legend>login with password</legend>

<label for="login" class="fixed optional">Login name :</label>

<input type="text" name="login" id="login" value="" class="fixed">
<label for="password" class="fixed optional">Secret password :</label>

<input type="password" name="password" id="password" value="" class="fixed">
<label for="remember_me" class="fixed optional">Remember me :</label>

<input type="hidden" name="remember_me" value="0"><input type="checkbox" name="remember_me" id="remember_me" value="1" class="fixed"></fieldset></div></form>

et voilà mon css

Code:

.fixed
    {
        position: fixed;
        overflow: hidden;
        border: 0px solid black;
        padding: 1px 0;
        margin-left: auto;
        margin-right: auto;
    }

mais le css n'est pas responsable de son affichage parce-que le formulaire est chargé via l'aide de vue d'action et que c'est dans le layout qu'est situé le css.

Je regarde si je peux changer la visibilité via le css

Hors ligne

 

#8 15-09-2009 00:00:32

daverck
Membre
Date d'inscription: 14-09-2009
Messages: 30

Re: [Résolu][Zend_Form][1.9] rendu d'un champ <input type="text"

Le css règle mon problème comme il faut !

merci pour ton petit bou de code

Code:

display:none;

qui a aider un débutant comme moi !

bonne nuit !

PS : comment on marque ce post en résolu ? j'ai chercher partout

Dernière modification par daverck (15-09-2009 08:22:19)

Hors ligne

 

#9 15-09-2009 09:13:06

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: [Résolu][Zend_Form][1.9] rendu d'un champ <input type="text"

Tu édites ton 1er messages et tu ajoutes [Résolu] au début du titre (non, on n'est pas à la préhistoire smile )

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

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