Ce décorateur vous permets d'ajouter du code HTML avant ou après un élément de formulaire.
<?php
class Wiip_Form_Decorator_Html extends Zend_Form_Decorator_Abstract
{
public function render($content) {
$placement = $this->getPlacement();
switch ($placement) {
case self::APPEND:
return $content . $this->_options['html'];
break;
case self::PREPEND:
return $this->_options['html'] . $content;
break;
}
}
}
?>
On ajoute un lien Annuler à un bouton :
<?php
$submit = new Zend_Form_Element_Submit('create');
$submit->setLabel('Créer le site')
->addPrefixPath('Wiip_Form_Decorator', 'Wiip/Form/Decorator/', 'decorator')
->setDecorators(array(
'ViewHelper',
array('Html', array('html' => ' ou <a href="/">Annuler</a>'))
));
$this->addElement($submit);
?>
On ajoute un suffixe et un préfixe à un champ texte :
<?php
$url = new Zend_Form_Element_Text('url');
$url->setLabel('Adresse du site :')
->setDescription('Vous ne devez utiliser que des lettres, des chiffres ou des tirets.')
->setRequired(true)
->addPrefixPath('Wiip_Form_Decorator', 'Wiip/Form/Decorator/', 'decorator')
->setDecorators(array(
'ViewHelper',
array(array('prefix' => 'Html'), array('html' => 'http://', 'placement' => 'prepend')),
array(array('suffix' => 'Html'), array('html' => '.microsito.fr', 'placement' => 'append')),
'Description',
'Errors',
array('HtmlTag', array('tag' => 'dd')),
array('Label', array('tag' => 'dt'))
));
$this->addElement($url);
?>
On peut également l'utiliser pour ajouter le symbole Euro à un champ destiné à recevoir un montant.
Commentaires
Anonyme21232 (non vérifié)
lun, 16/11/2009 - 16:11
Permalink
Magnifique, juste ce que je
Magnifique, juste ce que je cherchais
Jean (non vérifié)
jeu, 09/12/2010 - 13:08
Permalink
Merci beaucoup. J'ai utilisé
Merci beaucoup.
J'ai utilisé ce décorator pour faire une aide de champ. Je voulais qu'à côté d'un champ Zend_Dojo_Form s'affiche une icône. Lorsque l'on survole l'icône avec la souris, un DIJIT TOOLTIP DOJO affiche une jolie aide contextuelle.
Exemple d'utilisation pour un champ d'une form :
// essai d'un décorator sur texte 2
$texte2->addPrefixPath('Wiip_Forms_Decorator','Wiip/Forms/Decorator','decorator')
->setDecorators(array(
'Viewhelper',
//'Label',
// affiche le code HTML après le champ
array('Html',array('html' => '')),
'Errors', // afficher l'erreur APRES le signe '%'
array('HtmlTag', array('tag'=> 'dd')), // les données sont entre dd
array('Label', array('tag'=> 'dt')), // le label entre dt
'Description'
));
La balise "a" ajoutée après le champ possède un id. C'est lui qui appelera le code Javascript de la Dijit Tooltip Dojo.
Pour cela, il faut ajouter dans la vue :
ATTENTION, j'ai du enlever les crochets <> de certaines commandes pour qu'elles figurent dans ce blog...
script
djConfig="parseOnLoad: true";
dojo.require("dijit.Tooltip");
dojo.require("dijit.form.Button");
/script
un test d'utilisation d'un testtooltip2
codé en dur dans la vue HTML !
Ensuite, pour éviter de coder "en dur" dans la vue, adaptez pour que les messages d'aide soient en base de donnée, dans un fichier ini, etc.
Jean
Jean (non vérifié)
jeu, 09/12/2010 - 13:13
Permalink
Oupps, vous l'aurez corrigé
Oupps, vous l'aurez corrigé vous même :
L'id (voir le décorator du formalaire) se nomme testtooltip2, il faut donc que dans la vue, le connectId fasse référence à cet id testooltip2 (et non testtooltip1...)
Jean
Ajouter un commentaire