Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 21-12-2008 20:11:14

ziedb
Membre
Lieu: Tunis
Date d'inscription: 24-03-2008
Messages: 224

Personalisation Zend_Form -Questions Diverses

J'ai plusieurs questions quant à la personnalisation de Zend_Form :
1 - Mise en forme en tableau d'une Form
Comment faire pour avoir la mise en forme

Code:

<form....>
<table>
<tr>
  <td><label.... </td><td><input.... </td>
</tr>

<tr>
  <td><label.... </td><td><input.... </td>  
</tr>
.....
</table>
</form>

2- Comment créer des une mise en forme de ce type là ?

Code:

<div><h2>Titre 1</h2></div>

<div> ici Subform1 ou displaygroup1</div>

<div> Contenu quelconque</div>

<div><h2>Titre 2</h2></div>
<div> ici Subform2 ou displaygroup2</div>

3- Comment créer un bouton 'Reset' pour remettre à zéro  le contenu d'un formulaire?

Merci

Hors ligne

 

#2 21-12-2008 21:14:46

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Personalisation Zend_Form -Questions Diverses

dérive Zend_Form

Hors ligne

 

#3 22-12-2008 08:41:42

ziedb
Membre
Lieu: Tunis
Date d'inscription: 24-03-2008
Messages: 224

Re: Personalisation Zend_Form -Questions Diverses

Merci

roll
Si c'était des maths, je saurais le faire sans difficulté. Par contre la POO n'est pas mon point fort.
Peux-tu stp m'aider avec des exemples concrets avec des morceaux de codes?

Merci encore

Dernière modification par ziedb (22-12-2008 08:42:20)

Hors ligne

 

#4 02-01-2009 10:11:42

ziedb
Membre
Lieu: Tunis
Date d'inscription: 24-03-2008
Messages: 224

Re: Personalisation Zend_Form -Questions Diverses

Bonne Année
J'espère que vos idées sont bien rafraichies!!!
Quelqu'un peut m'aider?

Hors ligne

 

#5 02-01-2009 12:35:52

acharrex
Membre
Lieu: Suisse
Date d'inscription: 27-04-2008
Messages: 135

Re: Personalisation Zend_Form -Questions Diverses

Salut,

Pour faire une disposition en tableau :

Code:

$form->setDecorators(array(
    'FormElements',
    array('HtmlTag', array('tag' => 'table')),
    'Form',
));

$form->setElementDecorators(array(
    'ViewHelper',
    'Errors',
    array(array('data' => 'HtmlTag'), array('tag' => 'td', 'class' => 'element')),
    array('Label', array('tag' => 'th', 'class' => 'header')),
    array(array('row' => 'HtmlTag'), array('tag' => 'tr')),
));
        
$form->submit->setDecorators(array(
    array('decorator' => 'ViewHelper', 'options' => array('helper' => 'formSubmit')),
    array('decorator' => array('td' => 'HtmlTag'), 'options' => array('tag' => 'td', 'colspan' => 2)),
    array('decorator' => array('tr' => 'HtmlTag'), 'options' => array('tag' => 'tr')),
));

Et pour faire un affichage personnalisé, passe ton instance de Zend_Form a cette fonction :

Code:

public function getFormModeWrite(Zend_Form $form) {
    
    $array = array();
    $array['action'] = $form->getAction();
    $array['method'] = $form->getMethod();
    
    foreach ( $form->getElements() as $element ) {
        $element->removeDecorator('HtmlTag');
        $element->removeDecorator('Label');
        $array[$element->getName()]['label'] = $element->getLabel();
        $array[$element->getName()]['element'] = $element;
    }
       
    return $array;
    
}

Et ensuite dans ta vue tu pourras utiliser ton form ainsi :

Code:

<tr>
    <th><?php echo $this->form["email"]["label"]; ?></th>
    <td><?php echo $this->form["email"]["element"]; ?></td>
</tr>
<tr>
    <td colspan="2">&nbsp;</td>
</tr>
<tr>
    <th><?php echo $this->form["subject"]["label"]; ?></th>
    <td><?php echo $this->form["subject"]["element"]; ?></td>
</tr>

Pour créer un bouton Reset, tu peux le faire de la même manière que pour un bouton Submit :

Code:

$button = $form->createElement("reset", "button_name");
$button->setIgnore(true)
       ->setLabel("Rétablir");

Ou instancier Zend_Form_Element_Reset.


Voilà j'espère que cela t'aidera wink

Enfin, tous ces codes proviennent de ce forum ou de la doc officielle, donc je te conseille de chercher un peu (plus) et tu trouveras certainement ce que tu cherches.

Dernière modification par acharrex (02-01-2009 12:47:21)

Hors ligne

 

#6 02-01-2009 13:07:22

ziedb
Membre
Lieu: Tunis
Date d'inscription: 24-03-2008
Messages: 224

Re: Personalisation Zend_Form -Questions Diverses

Merci
Y'a-t-il un moyen d'encapsuler tout ça dans ma classe 'MyForm' sans avoir à intervenir au niveau du contrôleur et de la vue?

Hors ligne

 

#7 02-01-2009 13:10:19

acharrex
Membre
Lieu: Suisse
Date d'inscription: 27-04-2008
Messages: 135

Re: Personalisation Zend_Form -Questions Diverses

Pour les points 1 et 3, tout se passe dans ton modèle (donc dans ta classe "MyForm"), mais pour le point 2 tu seras obligé de retoucher ta vue à moins que les Decorators répondent à tes besoins.

Dernière modification par acharrex (02-01-2009 13:10:55)

Hors ligne

 

#8 02-01-2009 13:30:22

ziedb
Membre
Lieu: Tunis
Date d'inscription: 24-03-2008
Messages: 224

Re: Personalisation Zend_Form -Questions Diverses

Merci
Pour le point1, j'ai essayé d'intégrer la première partie du code (là où il y a $form->setDecorators...) dans ma méthode __construct() de ma classe Myform (là où je définis mes éléments). Il n'y que le tag <table> qui est pris en considération. Les éléments continuent à être affichés avec les tag <dt> et <dd>.

Pour le point 3, ma question n'est peut être pas claire. Je sais comment ajouter un deuxième bouton reset mais la question est : Comment connaitre lequel des boutons à été utilisé pour effectuer le traitement correspondant?

Dernière modification par ziedb (02-01-2009 13:33:18)

Hors ligne

 

#9 02-01-2009 13:40:46

acharrex
Membre
Lieu: Suisse
Date d'inscription: 27-04-2008
Messages: 135

Re: Personalisation Zend_Form -Questions Diverses

Est-ce que tu fais un "setElementDecorators" ailleurs ?

Pour le point 3, si tu as deux boutons Reset il faut les nommer différemment et tester le onclick en Javascript. Si tu n'en as qu'un seul, à quoi bon savoir s'il a été cliqué ou non ?

Hors ligne

 

#10 02-01-2009 16:43:46

ziedb
Membre
Lieu: Tunis
Date d'inscription: 24-03-2008
Messages: 224

Re: Personalisation Zend_Form -Questions Diverses

Est-ce que tu fais un "setElementDecorators" ailleurs ? =>Non

Pour le point 3, c'est réglé : $this->_hasparam('nomdusubmit');

Hors ligne

 

#11 12-01-2009 22:38:35

Jean-Marc Rigade
Membre
Lieu: Rennes
Date d'inscription: 25-09-2007
Messages: 314

Re: Personalisation Zend_Form -Questions Diverses

Bonjour,

la méthode getFormModeWrite est vraiment bien et permet de disposer les choses un peu comme on veut...

Mais les décorateurs pour obtenir un tableau, j'ai beau essayer dans tous les sens, mais comme Ziedb, je n'obtiens pas quelque chose de correct.

Sais-tu où obtenir un source complet de formulaire, même un tout petit formulaire avec l'utilisation des bons décorateurs...
Merci.

Hors ligne

 

#12 13-01-2009 07:58:29

acharrex
Membre
Lieu: Suisse
Date d'inscription: 27-04-2008
Messages: 135

Re: Personalisation Zend_Form -Questions Diverses

En fait ce code fonctionnait avec le ZF 1.6 mais plus avec le ZF 1.7. Bizarre.

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