Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 07-12-2009 19:17:39

kam!
Nouveau membre
Date d'inscription: 07-12-2009
Messages: 3

[Zend Form] inserer du texte brut entre 2 champs d'un formulaire

Bonjour je débute un peu sous ZF, notamment sur le composant Zend_Form, je n'arrive pas a créer ce cas de figure assez simple pourtant... comment faire?

Il s'agit en fait de mettre du texte de type <h1>blablablabla texte </h1> dans le même formulaire.
J'ai essayé de découper le formulaire en sous-formulaire ( addSubForm() )  mais je n'arrive pas a insérer du texte entre les 2 blocs.

Code:

<form id="form1" name="form1" method="post" action="">
  <label>Champ 1
  <input type="text" name="champ1" />
  </label>
    <label>Champ 2
    <input type="text" name="champ2" />
    </label>
  <h1>blablablabla texte </h1>
    <label>Champ 3
    <input type="text" name="champ3" />
    </label>

    <label>
    <input type="submit" name="Submit" value="Envoyer" />
    </label>
</form>

Je ne trouve pas de solutions sur ce forum et sur google non plus.

Code:

           $form = new Zend_Form();
            $form->addElement('text', 'champ1', array(
                'label'      => 'champ1'
            ));

            $form->addElement('text', 'champ2', array(
                'label'      => 'champ2'
            ));

          $form-> ?????? (  '<h1>blablablabla texte </h1>' );

            $form->addElement('text', 'champ3', array(
                'label'      => 'champ1'
            ));

Heeeeeeeeeelp !

Hors ligne

 

#2 07-12-2009 22:15:17

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: [Zend Form] inserer du texte brut entre 2 champs d'un formulaire

Haha, en effet, comme moi au début, j'ai trouvé que la manipulation des formulaires était complexes mais permet tellement de possibilité lorsqu'on maîtrise bien ! Plus tard tu ne vas pas regretter, crois moi !

Bref, comme tu débute avec Zend, je vais t'expliquer une façon simple mais qui n'est pas nécessairement la meilleure selon les cas !

Présentement, dans ta vue, tu dois faire ceci :

Code:

//Dans ton fichier view .phtml
 echo $this->form;

Mais pour des formulaires dont la disposition est complexes, tu peux créer ton formulaire en HTML et appeler seulement les éléments de ton formulaire un à un. C'est plus simple pour débuter :

Code:

//Dans ton fichier view .phtml
<form name='formName' method='post' enctype='multipart/form-data'>
                <fieldset>
                    <h3>Mon titre</h3>
                <table >
                    <tr>
                                <td>".$this->form->champ1."</td>
                        <td>".$this->form->champ2."</td>
                    </tr> 
                    <tr>    
                        <td>".$this->form->champ3."</td>
                        <td>".$this->form->champ4."</td>
                    </tr>
                    
                    </table>
                </fieldset>
</form>

Lorsque tu vas devenir à l'aise avec les validator et les éléments de formulaire, je te conseils de regarder le zend_form_decorator pour modifier la génération de ton formulaire.

http://framework.zend.com/manual/fr/zen … ators.html

Et puis, si des champs de formulaire revienne souvent dans ton site ou même dans tes projets (ex: champs téléphone, nom, etc...) Tu peux créer tes propres éléments de formulaire avec tes validations préprogrammés !!!

Tu pourras ainsi appeler ton élément de formulaire de cette façon:

Code:

     //Dans la classe de ton formulaire
     $postalcode= new Zend_Form_Element_CodePostal('postalcode');

http://framework.zend.com/manual/fr/zend.form.elements.html

Dernière modification par probitaille (07-12-2009 22:16:41)

Hors ligne

 

#3 08-12-2009 16:00:38

kam!
Nouveau membre
Date d'inscription: 07-12-2009
Messages: 3

Re: [Zend Form] inserer du texte brut entre 2 champs d'un formulaire

Salut merci probitaille d'avoir pris la peine de me répondre.
le soucis c'est que je fais déjà comme la facon que tu me propose qui est en effet beaucoup plus simple, pour l'instant c'est la seule méthode qui marche que j'ai trouvé mais je remarque que même en fesant comme ça j'ai toujours besoin des decorators ! Je me disais autant faire ça directement dans ma classe qui étant Zend_Form.. que de passer par la vue. Bref je suis quand même étonné qu'une chose aussi simple que de rajouter un texte dans un formulaire ne soit pas prévue!

Bref ya t'il un moyen de suprimer la balise form d'un formulaire Zend, j'ai dans l'idée avec ça d'arrivé a mon resultat en découpant mon formulaire en plusieurs petit pour y injecter du texte. L'idée ici serais d'avoir une balise form dans ma vue et je ferais appel a chaque sous formulaire de mon formulaire sans sa balise form.
sans ça j'ai des choses de ce genre :

Code:

<form id="principal">
   Texte bla bla
   <form id="sousform1"> 
    ....
   </form>
   Titre sous formulaire1
   <form id="sousform2"> 
  ....
   </form>
    Titre sous formulaire2
   <form id="sousform2"> 
 ....
   </form>
</form>

Sinon comment faire avec les décorators ?

Hors ligne

 

#4 08-12-2009 16:36:29

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: [Zend Form] inserer du texte brut entre 2 champs d'un formulaire

Code:

//Dans ton fichier view .phtml
<form name='formName' method='post' enctype='multipart/form-data'>
                <fieldset>
                    <h3>Mon titre</h3>
                <table >
                    <tr>
                                <td>".$this->form->champ1."</td>
                        <td>".$this->form->champ2."</td>
                    </tr> 
                    <tr>    
                        <td>".$this->form->champ3."</td>
                        <td>".$this->form->champ4."</td>
                    </tr>
                    
                    </table>
                </fieldset>
</form>

Si tu remarques bien dans cette example, la balise form de provient pas de la classe de mon formulaire, je l'ai écrite manuellement dans mon .phtml. Je ne fais pas appel à TOUT le formulaire mais seulement aux éléments
$this->form->monElement.

Sinon, si ton texte est pour décrire tes champs, tu as toujours le setLabel pour créer un label sur tes champs mais je ne pense pas que c'est ce que tu cherches.

Bref je suis quand même étonné qu'une chose aussi simple que de rajouter un texte dans un formulaire ne soit pas prévue!

En fait, il a des champs prévus dans Zend pour écrire certain texte ( setDescription ou setLabel ) sinon, tu peux toujours manipuler et transformer ta classe de formulaire pour généré tes textes comme tu le souhaites mais je ne te conseils pas. La meilleure solution pour toi serait comme je l'ai déjà de NE PAS appeler ta classe de formulaire mais seulement tes éléments.

Hors ligne

 

#5 08-12-2009 16:50:46

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [Zend Form] inserer du texte brut entre 2 champs d'un formulaire

Qqun a essayer les displaygroupes ?? Car, vous rechercher à regroupé des zones, c'est fait pour, suffit après de modifier les décorateurs selon votre convenance


----
Gruiiik !

Hors ligne

 

#6 09-12-2009 19:21:29

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: [Zend Form] inserer du texte brut entre 2 champs d'un formulaire

Pour l'utilisation des decorators, j'ai créer un dossier decorators dans mon dossiers forms, c'est la que vont se trouver les classes perso decorators.

Pour relier les decorator avec tes formulaires, tu peux faire comme ceci dans ton controller lors de l'appel à ton formulaire:

Code:

$form    = new Default_Form_SearchByType();
$form->addElementPrefixPath('Default_Form_Decorator', APPLICATION_PATH.'/forms/decorators/', 'decorator');
$this->view->form1 = $form1;

Mes decorators sont construit selon l'exemple officiel:

http://framework.zend.com/manual/en/zen … ors.custom

Puis dans la classe de mon formulaire, je set les decorators pour mes éléments, par exemple, ici mon submit perso

Code:

$submit = new Zend_Form_Element_Submit('submit');
$submit    ->setAttrib('id', 'submitbutton')
        ->setDecorators(array('Submit'));;

Je vous conseil fortement de lire la documentation officiel...

Pour les éléments perso c'est la même chose, dossier elements dans dossier forms, appel semblable:

Code:

$form->addPrefixPath('Default_Form_Elements_', APPLICATION_PATH.'/forms/elements/', 'element');

Je vous mets là la façon que je fonctionne, ceci dit, ce n'est pas nécessairement la meilleure mais ça fonctionne comme je veux !!

Hors ligne

 

#7 15-12-2009 16:06:50

kam!
Nouveau membre
Date d'inscription: 07-12-2009
Messages: 3

Re: [Zend Form] inserer du texte brut entre 2 champs d'un formulaire

merci de ton aide je vais faire comme tu as dis me créer une collections d'élément que je peux réutiliser partout ça me permettras de garder le controller des validateurs et de personnalisé mon formulaire dans ma vue comme je veux. Le truc c'est que avec zend il y a tellement de manière différente de faire qu'on ne sait pas laquelle choisir wink

Hors ligne

 

#8 15-12-2009 16:32:17

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: [Zend Form] inserer du texte brut entre 2 champs d'un formulaire

C'est exact ! Mais tu vas voir, quand tu vas avoir créé tes éléments perso et t'avoir bien adapté avec ta propre façon, tu vas les reprendre de projet en projet ce qui va accélérer énormément la création de formulaire, la validation surtout !

Mon dieu, je me rappel du temps ou j'écrivais des dizaines et dizaine de ligne pour valider un formulaire tongue
Maintenant, je prog à 10 forms à l'heure tongue

10f/h XD Nouvelle vitesse de prog

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