Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour à tous,
pour mon premier message, j'aurais besoin d'aide avec mon formulaire. J'essaye de faire un exemple basic de formulaire (un bouton et un élément texte) dans un tableau à l'exception que j'aimerais afficher ces deux éléments sur une même ligne mais dans 2 colonnes.
Ce qui devrait donner en HTML :
<tbody>
<form method="post" action="" enctype="application/x-www-form-urlencoded"/>
<tr>
<td>
<input id="tb1" type="text" value="" name="tb1"/>
</td>
<td>
<button id="bt1" value="bt1" type="button" name="bt1">bt1</button>
</td>
</tr>
Mais j'arrive uniquement à les afficher l'un en dessous de l'autre :
<tbody>
<form method="post" action="" enctype="application/x-www-form-urlencoded"/>
<tr>
<td>
<input id="tb1" type="text" value="" name="tb1"/>
</td>
</tr>
<tr>
<td>
<button id="bt1" value="bt1" type="button" name="bt1">bt1</button>
</td>
</tr>
Je fais ça avec un décorateur :
$boutonElement->setDecorators(array(
'ViewHelper',
'Errors',
array(array('data' => 'HtmlTag'), array('tag' => 'td'))
));
$boutonElement->removeDecorator('Label');
$textElement->setDecorators(array(
'ViewHelper',
'Errors',
array(array('data' => 'HtmlTag'), array('tag' => 'td')),
array(array('row' => 'HtmlTag'), array('tag' => 'tr'))
));
Voilà mon problème, alors si vous avez une solution, c'est avec grand plaisir merci d'avance.
P.S. Je ne veux pas mettre un bouton "submit" mais bien un bouton "standard"
Dernière modification par fredouille312 (04-11-2008 22:58:42)
Hors ligne
Ton decorateur htmltag pour les tr n'est pas a placer dans les élements mais dans les décorateurs du formulaire.
Quelque chose comme c a:
$form->setDecorators(array( 'formElments' array('HtmlTag', array('tag' => 'tr')) 'Form', ));
Hors ligne
Salut nORKy,
effectivement je vois la différence merci. Mais je bloque encore sur un point. J'ai voulu rajouter une deuxième ligne (composer à nouveau d'un élément texte et d'un bouton) et ça ne fonctionne pas.
Voilà ce qu'il m'affiche :
<tr>
<td>
<input id="tb1" type="text" value="" name="tb1"/>
</td>
<td>
<button id="bt1" value="bt1" type="button" name="bt1">bt1</button>
</td>
<td>
<input id="tb2" type="text" value="" name="tb2"/>
</td>
<td>
<button id="bt2" value="bt2" type="button" name="bt2">bt2</button>
</td>
</tr>
Je pense qu'il faut modifier le décorateur du bouton mais je vois pas comment.
Hors ligne
Ah, dans ce cas, il faut voir les choses autrement.
Par exemple, tu peux utiliser un displaygroup, et faire en sorte que ce displaygroup utilise htmltag 'tr' à la place du fieldset.
Tu mets chaque Text + son button dans un displaygroup
Ou alors, faire ton propre décorateur
Je croise que tu n'arrives pas encore à visualiser le fonctionnement des décorateurs.
C'est comme les poupée russe, chacun englobe celui du dessous.
Hors ligne
Ok je vais voir du côté des displayGroup. Par contre, j'ai eut de la peine à trouver de la doc sur les décorateurs donc si tu as de bonnes adresses (autre que le manuel) ou exemples pour créer un décorateur je suis preneur.
(Tu auras compris que je débute avec le z-f et particulièrement avec les décorateurs).
Hors ligne
Voilà j'ai trouvé une solution qui me convient. Le décorateur du premier élément doit comporter :
array(array('row'=>'HtmlTag'),array('tag'=>'tr', 'openOnly'=>true))
le décorateur du dernier élément doit comporter :
array(array('row'=>'HtmlTag'),array('tag'=>'tr', 'closeOnly'=>true))
pour le décorateur du formulaire :
array('HtmlTag', array('tag' => 'table')),
Hors ligne
Tout est bien qui fini bien alors
Par contre, faut que moi aussi je revois ma doc, car je ne savais pas qu'il y avait des propriété 'row' et 'closeOnly'..
Hors ligne
Pages: 1