Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 20-03-2008 13:52:44

whitespirit
Membre
Date d'inscription: 25-01-2008
Messages: 393

[Résolu]Zend_Form : comment créer un Element ? ajouter du javascript ?

Bonjour,

1. Comment ajouter du javascript juste après l'affichage de la forme ? Dans la doc, j'ai vu qu'on peut utiliser la méthode ->SetDescription(''); mais je n'ai rien à l'affichage.

2. Pour gérer les dates, j'ai pu intégrer un script et dans mon formulaire de saisie de dates, je dois avoir : une zone de texte + un bouton + javascript. Le bouton fait appel au javascript qui charge le calendrier. Je n'ai pas trouvé dans la doc comment faire pour ajouter ce type de code, alors je vais créer un Zend_Form_Element mais je  ne crois pas qu'il y'a une documentation à ce sujet ? Avez-vous déjà réussi ce type de données dans un Zend_Form.

Merci beaucoup.

Dernière modification par whitespirit (21-03-2008 11:52:18)

Hors ligne

 

#2 20-03-2008 20:07:14

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [Résolu]Zend_Form : comment créer un Element ? ajouter du javascript ?

Perso pour le js, j'externalise tous mes codes (comportement du document) qui comme la mise en forme (css) n'ont rien à faire avec le document lui même (xhtml smile ).
J'utilise jQuery qui avec son approche très DOM, permet de manipuler très essayement des lots (oupas) d'éléments. C'est franchement du bonheur.

Pour ton cas, je rajouterai le bouton en js (puisque sans js, il n'a pas lieu d'être) et "j'insèrerai" le code en fin du document.
Par exemple tu pourrais avoir dans un js séparé le code suivant:

Code:

//Code utilisant jQuery
$(document).ready(function() {  //execute le code un fois la page chargée (comme ça on sait que l'input est "chargé" dans le DOM
    
    //on créer le bouton
    var jBtnDate = $('<input type="..." ... />");
    
    //On assigne le comportement
    jBtnDate.bind('click', function() {
        //Code de ton choix (appel du Datepicker jQuery? :) )
        ....
    });

    //On trouve la zone de texte avec son id (plus rapide)
    var jInput = $(#tonId');

    //On ajoute le bouton apres l'input
    jInput.after(jBtnDate);  
});

D'ailleurs au passage j'aurais codé ça comme ça:

Code:

$(function() { // $(fn) == $(document).ready()
    $(#tonId').after($('<input type="..." ... />").bind('click', function() {
        //Code de ton choix (appel du Datepicker jQuery? :) )
        ....
    }););  
});

Ca va plus vite ^^, c'est ça que j'aime bien avec jQuery

Après je te laisse le soin d'inclure le script dans la page (pourquoi pas avec Zend_View_Helper_HeadScript wink histoire de faire le tout proprement)

PS: Je ne suis pas sponso par jQuery smile mais c'est comme le zf, j'apprécie grandement!

Hors ligne

 

#3 20-03-2008 22:01:04

ndesaleux
Membre
Date d'inscription: 16-04-2007
Messages: 196
Site web

Re: [Résolu]Zend_Form : comment créer un Element ? ajouter du javascript ?

J'aurais meme simplifier encore plus en utilisant les selecteurs de classes, ce qui me permet de gerer plusieurs datepicker dans un même formulaire tongue

Hors ligne

 

#4 20-03-2008 23:52:23

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [Résolu]Zend_Form : comment créer un Element ? ajouter du javascript ?

Evidemment, mais faut pas embrouiller dessuite avec les selecteurs complexes, sinon les gens vont avoir peur smile

Hors ligne

 

#5 21-03-2008 06:07:04

whitespirit
Membre
Date d'inscription: 25-01-2008
Messages: 393

Re: [Résolu]Zend_Form : comment créer un Element ? ajouter du javascript ?

Coucou,

Pour l'instant je n'ai pas utilisé JQuery car moi et le javascript, ça fait 4. J'utilise un autre calendrier qui demande d'ajouter un javascript juste après la zone de texte + bouton.

Mais ce que tu me dis m'interesse fortement :

Pour ton cas, je rajouterai le bouton en js (puisque sans js, il n'a pas lieu d'être) et "j'insèrerai" le code en fin du document.

Dans ton formulaire Zend_Forms, comment tu ajoutes le bouton et la zone de texte associé ?

Enfin, les sélecteurs de classes font parties de ZF ou Javascript ? En soit, je viens du monde de Windows, donc j'ai l'habitude de coder en c++, le javascript ne m'effraie pas vraiment, c'est  plus le temps que je vais prendre qui me tracasse.

Merci beaucoup.

PS: Mr.MoOx, tu utilises JSON avec JQuery ? En dehors de l'importation de la lib JQuery et des chemins dans mon application ZF, est-ce qu'il faut paramétrer d'autres choses ? Est-ce que pour coder la vue et le controlleur, il y'a de nouveaux mécanismes à mettre en place ? Peut-être que tu as un petit tutos ?

PS2: serieusement, un petit morceau de code complet pour utiliser JQuery dans les vues smile ?

Dernière modification par whitespirit (21-03-2008 07:22:59)

Hors ligne

 

#6 21-03-2008 07:43:44

whitespirit
Membre
Date d'inscription: 25-01-2008
Messages: 393

Re: [Résolu]Zend_Form : comment créer un Element ? ajouter du javascript ?

Actuellement voilà mon code sans utiliser Zend_Form

Code:

      <input type="text" name="date" id="f_date_b" />
           <button type="reset" id="f_trigger_b">...</button>
      <?php 
          $jscalendar = Zend_Controller_Action_HelperBroker::getStaticHelper('JsCalendar');
          $var = $jscalendar->JsCalendar();
          echo $var;
      ?>

J'ai un input text pour recevoir la date, un bouton pour ouvrir le calendrier et la variable $var contient le javascript que je dois afficher.  Ca fonctionne, mais je souhaiterai utiliser cette zone dans mon Zend_Form, là je bloque : est-ce que je dois créer des helpers et de nouveaux elements ou bien j'ai un moyen plus simple ?

Enfin, dans la doc sur les forms, cette partie m'interpelle mais je n'arrive pas à l'implémenter :

description: a description of the element; often used to provide tooltip or javascript contextual hinting describing the purpose of the element. Uses the setDescription() and getDescription()  accessors.

Je l'utilise de la sorte dans ma Zend_Form :

Code:

        $nom = new Zend_Form_Element_Text('nom');
        $nom->setLabel('Nom')
            ->setDescription('XXXXXXXXXXXXXXXXXXXXX')
            ->setRequired(true)
            ->addValidator('NotEmpty', true, array('messages' => 'Le nom ne doit pas être vide.'))
            ->addValidator('Alnum',true, array('messages' => 'Le nom de société doit contenir uniquement des caractères alphanumériques.'));                            
       // $nom->setDescription('XXXXXXXXXXXXXXXXXXXXXXXX');
        
        $submit = new Zend_Form_Element_Submit('submit');
        $submit->setLabel(TK_AJOUTER);
        
        $this->addElements(array($nom, $submit));

Mais après avoir fait echo $form, la description n'apparait pas.

Dernière modification par whitespirit (21-03-2008 08:00:32)

Hors ligne

 

#7 21-03-2008 10:32:57

whitespirit
Membre
Date d'inscription: 25-01-2008
Messages: 393

Re: [Résolu]Zend_Form : comment créer un Element ? ajouter du javascript ?

Ho, j'ai eu une révélation et j'ai pu utiliser la méthode getDescription().

En fait, c'est beaucoup plus simple que ça, dans ma vue, j'accède aux Elements du formulaire de la manière suivante :

Code:

    <?php eval($this->form->nom->getDescription()); ?>

. Super non ? Bon, ça complique le formulaire, mais pour l'instant je n'ai pas trouvé mieux.

N'hésitez pas à donner vos astuces, surtout pour utiliser du JQuery (pitié roll)

Hors ligne

 

#8 21-03-2008 11:30:53

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [Résolu]Zend_Form : comment créer un Element ? ajouter du javascript ?

Dans ton formulaire Zend_Forms, comment tu ajoutes le bouton et la zone de texte associé ?

Je n'ajoute que le bouton cf code au dessus.

Enfin, les sélecteurs de classes font parties de ZF ou Javascript ? En soit, je viens du monde de Windows, donc j'ai l'habitude de coder en c++, le javascript ne m'effraie pas vraiment, c'est  plus le temps que je vais prendre qui me tracasse.

Ni l'un ni l'autre, ce sont les selecteurs CSS! http://docs.jquery.com/Selectors

Mr.MoOx, tu utilises JSON avec JQuery ?

Pas spécialement mais j'vais m'y mettre pour la validation des form en ajax

En dehors de l'importation de la lib JQuery et des chemins dans mon application ZF, est-ce qu'il faut paramétrer d'autres choses ? Est-ce que pour coder la vue et le controlleur, il y'a de nouveaux mécanismes à mettre en place ? Peut-être que tu as un petit tutos ?

Non rien de spécial

Sinon à propos des descriptions, elles apparaisent pas dans les attributs title?
Pourquoi tu fais un eval?

Hors ligne

 

#9 21-03-2008 11:47:17

whitespirit
Membre
Date d'inscription: 25-01-2008
Messages: 393

Re: [Résolu]Zend_Form : comment créer un Element ? ajouter du javascript ?

Merci de ta réponse.

Non la description n'apparait pas après un appel "echo". Je dois appeler $element->getDescription(). Mais cette fonction me renvoie du texte qui sera interprété comme du html et non comme du code php. Alors j'utilise eval() pour interpréter ce code par le moteur php. Effectivement c'est domage que la description ne soit pas ajouté directement lors du echo. D'ailleurs voici un extrait de la doc :

description: a description of the element; often used to provide tooltip or javascript contextual hinting describing the purpose of the element. Uses the setDescription() and getDescription()  accessors.

Bon, maintenant il me faut maitriser (ou presque) les décorateurs et là je crois que je vais vraiment galérer. Je n'ai rien trouver dessus de lisible.

Tu utilises pour faire quoi JQuery dans tes applis ? Selon toi, par ou dois-je commencer et combien de temps faudrait-il en moyenne pour pouvoir l'utiliser ?

Dernière modification par whitespirit (21-03-2008 11:49:02)

Hors ligne

 

#10 21-03-2008 12:21:01

ndesaleux
Membre
Date d'inscription: 16-04-2007
Messages: 196
Site web

Re: [Résolu]Zend_Form : comment créer un Element ? ajouter du javascript ?

JQuery est super rapide à prendre en main, et très peu verbeux.
Perso, je l'utilise pour rajouter une surcouche comportementale (prévérification JS de formulaire,modification des CSS sur action)  si JS activé

Hors ligne

 

#11 21-03-2008 15:21:32

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [Résolu]Zend_Form : comment créer un Element ? ajouter du javascript ?

jQuery c'est pour touts les ajouts ergonomiques / intéractions donc:
- Animation/Effet visuel (dernier exemple en date: fond nuageux qui bouge sur http://www.moox.fr/ smile )
- Requete Ajax (certaine fonctionnalité ne nécéssite pas forcément un rechargement complet de la page)

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