Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
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 :
<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 :
<?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
si tu rajoutes ?
'style' => 'display:none;'
Hors ligne
à 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
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
ouai direct sur captcha, ou alors essaye
'style' => 'visibility:hidden;'
$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
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
Hors ligne
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
voilà mon le rendu du formulaire si ça peut t'aider :
<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
.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
Le css règle mon problème comme il faut !
merci pour ton petit bou de 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
Tu édites ton 1er messages et tu ajoutes [Résolu] au début du titre (non, on n'est pas à la préhistoire )
A+, Philippe
Hors ligne
Pages: 1