IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend_Form PHP Discussion :

Aspect des Zend_Form_Element_Captcha


Sujet :

Zend_Form PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut Aspect des Zend_Form_Element_Captcha
    Bonjour,

    je fais actuellement un petit formulaire d'inscription dont le rendu est en pièce jointe (ne pas faire attention à l'aspect visuel, seul le placement des élément m'importe pour le moment...)

    Vous remarquerez que mon captcha présente un label avec le nom de l'image chargée dedans et je sais pas comment l'enlever ?

    Mon code:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    protected $_deco_captcha = array(
            'ViewHelper',
            array('Description', array('tag' => 'div', 'class' => 'description')),
            array('Errors', array('tag' => 'div')),
            array(array('div1' => 'HtmlTag'), array('tag' => 'div', 'class' => 'form_col2')),
            array('Label', array('tag' => 'div', 'class' => 'form_col1'))
        );
     
     
    $this->addElement('captcha', 'secure',
                    array(
                        'label' => 'Entrer le code sécurité',
                        'captcha' => array(
                            'captcha' => 'Image',
                            'wordLen' => 6,
                            'timeout' => 300,
                            'font' => 'captcha/font/Harabara.ttf',
                            'imgDir' => 'captcha/render',
                            'imgUrl' => 'captcha/render'
                        ),
                        'decorators' => $this->_deco_captcha,
            ));

    Quelqu'un voit-il comment faire ?

    Merci

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2010
    Messages : 118
    Par défaut
    Madfrix,

    Je pense que la modification du décorateur du Captcha n'est pas complète.
    La clé se trouve normalement dans un champ caché.

    Avec le décorator par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <dd>
    <img width="200" height="50" src="http://localhost/xxxxxx/public/captcha/859fff6fb5882f2cd8d569b4b273b743.png" alt="captcha"/>
    <input type="hidden" id="captcha-id" value="859fff6fb5882f2cd8d569b4b273b743" name="captcha[id]"/>
    <input type="text" value="" id="captcha-input" name="captcha[input]"/>
    </dd>
    Je teste en ce moment le Zend_Captcha. ci-joint tous les paramètres mêmes ce qui ne sont pas documentés.
    Par contre gros problèmes pour contrôler la validation du captcha, si tu arrives fais nous en part.
    D'après la doc l'adapter Captcha fait lui-même office de validator.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    class Form extend Zend_Form {
    ...
     
    $adapter = new Zend_Captcha_Image(array(
     						/** propriété de Zend_Captcha_Base */
    					// Nom de l'éménent utilisable dans un formulaire
    					'name' => 'captcha'
    				    /** propriété de Zend_Captcha_Word */
    				    // temps-de-vie du jeton de session en secondes (par défaut 300s = 5mn)
    					, 'timeout' => 300
    				    // taille du "mot" généré, en caractères. 
    				    , 'wordLen' => 6
    				    /** propriété de Zend_Captcha_Image */
    				    // dossier dans lequel les images CAPTCHA générées seront stockées
    				    , 'imgdir' => PROJET_PATH.'/public/captcha'
    					// le chemin à utiliser pour la balise HTML servant à afficher l'image
    				    , 'imgUrl' => ROOT_URL.'public/captcha'
    					// chemin complet vers la police ttf à utiliser
    				    , 'font'  => dirname(dirname(__FILE__)).'/models/font/impact.ttf'
    				    // Chemin de l'image (format PNG) de fond du captcha 
    				   // , 'startImage' => dirname(dirname(__FILE__)).'/models/font/fond.png'
    				    // taille de la police à utiliser (en pixels)(par défaut = 24)
    				    , 'fontSize' => 24
    				    // hauteur de l'image du captcha (en pixels) (par défaut = 50)
    				    , 'height' => 50
    				    // Largeur de l'image du captcha (en pixels) (par défaut = 200)
    				    , 'width' => 200
    				    // fréquence de collecte du ramasse-miettes des images (par défaut tous les 100 requêtes)
    				    , 'gcFreq' => 100
    				    // Texte alternative, attribut 'alt' de la balise Html <img> 
    				    , 'imgAlt' => 'captcha'
    				    // Niveau de bruit verticale (par défaut 100)
    				    , 'dotNoiseLevel' => 100
    				    // Niveau de bruit horizontale (par défaut 5)
    				    , 'lineNoiseLevel' => 5
      			));
     
    		$captcha = new Zend_Form_Element_Captcha('captcha'			, array( 'label' => "Etes vous humain ?"
    				, 'captcha' => $adapter 
    						));
     
    		$captcha->addValidator($adapter);

  3. #3
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Exact Seb merci !

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    /**
         * Load default decorators
         *
         * @return void
         */
        public function loadDefaultDecorators()
        {
            if ($this->loadDefaultDecoratorsIsDisabled()) {
                return $this;
            }
     
            $decorators = $this->getDecorators();
            if (empty($decorators)) {
                $this->addDecorator('Errors')
                     ->addDecorator('Description', array('tag' => 'p', 'class' => 'description'))
                     ->addDecorator('HtmlTag', array('tag' => 'dd'))
                     ->addDecorator('Label', array('tag' => 'dt'));
            }
            return $this;
        }

    Donc mon décorateur ViewHelper était de trop...Bizarre je croyais que ViewHelper représentait toujours l'input/composant en lui même, j'ai du encore me fourvoyer

  4. #4
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Citation Envoyé par freeseb74 Voir le message
    Par contre gros problèmes pour contrôler la validation du captcha, si tu arrives fais nous en part.
    A priori, je n'ai pas eu de difficultés pour ce point là.

    Mon captcha :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
     $this->addElement('captcha', 'secure',
                    array(
                        'label' => 'Entrer le code sécurité',
                        'captcha' => array(
                            'captcha' => 'Image',
                            'wordLen' => 6,
                            'timeout' => 300,
                            'Width' => 150,
                            'Height' => 50,
                            'font' => 'captcha/font/Harabara.ttf',
                            'imgDir' => 'captcha/render',
                            'imgUrl' => 'captcha/render',
                            'dotNoiseLevel' => 20,
                            'lineNoiseLevel' => 3
                        ),
                        'Description' => 'dfg',
                        'decorators' => $this->_deco_captcha,
            ));

    Dans mon controlleur pour le moment :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $form = new My_Form_Inscription();
     
            if($this->_request->isPost() && $form->isValid($_POST)){
                echo 'formulaire valide';
            }
     
            $this->view->form = $form;


    il m'affiche bien "Captcha value is wrong" si je me trompe...

Discussions similaires

  1. Aspect des liens : IE fait des siennes
    Par Flamenco dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 13/09/2007, 15h03
  2. Changer l'aspect des onglets
    Par klawn dans le forum Windows Forms
    Réponses: 2
    Dernier message: 23/08/2007, 08h56
  3. aspect des liens
    Par micknic dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 15/09/2006, 21h00
  4. [CSS] Changer l'aspect des 'Input' et 'Submit'
    Par BnA dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 04/05/2006, 10h21
  5. Aspect des liens hypertextes
    Par flzox dans le forum Mise en forme
    Réponses: 5
    Dernier message: 04/09/2004, 15h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo