Ajouter des champs richtext avec HTML Quickform
Par Yves Tannier le mardi, mai 2 2006, 09:15 - Le PHP - Lien permanent
Etant un fervent utilisateur des nombreuses librairies d'objets disponibles sur le repository PEAR, j'utilise très souvent la classe HTML Quickform. Elle permet, comme son nom l'indique, de générer très rapidement des formulaires complets autant au niveau de la présentation [1] que sur le contrôle (les validations peuvent se faire client side en Javascript et/ou server side en PHP).
Je ne vais pas ici vous exposer comment utiliser cette classe. La documentation officielle fournie quelques exemples et les deux tutoriaux suivants permettent également d'aborder le sujet :
- Créez vos formulaires facilement avec le package HTML_quickform
- PEAR HTML_QuickForm Getting Started Guide
Ce qu'il me manquait, en plus des classiques champs HTML text, select, textarea, checkbox etc... C'était la possibilité d'ajouter aussi facilement un champ permettant en wysiwyg la saisie de type WiKi. Ce n'est donc qu'une adapatation de la classe de gestion des textarea que j'ai réalisé.
Me basant sur la classe Wiki2xhtml d'Olivier Meunier (le site n'est plus disponible) et de la barre d'outils qu'il lui est associée dans Dotclear, je génére avec la simple ligne suivante, un maaaagnifique champ de saisie "richtext".
<?php
$form->addElement('richtext', 'texte', 'Contenu');
?>
Voici une petite capture d'écran au cas où ca ne serait pas clair.
J'ai très rapidement (excusez donc le côté très simpliste) mis tout celà dans une archive avec, en prime, une petite documentation pour ceux qui souhaiterait l'essayer.
- Télecharger HTML_Quickform_Element_richtext
Bien entendu, toutes les méthodes de Quickform sont utilisables avec cette classe.
Et en plus produit je vous offre la petite todo list :
- Utiliser la classe Text Wiki disponible dans PEAR pour plus de cohérence
- Faire himself le Javascript et les boutons associés et envisager une prévisualisation directe en Ajax
- Proposer cet ajout au projet HTML Quickform
Commentaires, corrections et améliorations bienvenues 
Notes
[1] On peut aussi utiliser Quickform avec un système de template si on le souhaite. Par exemple, HTML Template Flexy
Commentaires
ok c'est super cool
mais dis moi comment fais-tu pour installer quikform quand tu es sur un serveur mutualisé lambda
salut
J'en parlais justement il y a quelques temps : www.grafactory.net/blog/2...
Ensuite, tu télécharges les paquets que veut installer sur le site pear.php.net
Bjr, je suis tombé sur ce topic en recherchant de la doc sur le package QuickForm.

J'aimerais savoir si, étant utilisateur de cette classe, vous n'auriez pas eut besoin un jour de vider les données de vos formulaires après un submit? C'est pratique parfois le callback mais pas toujours.
Pouvez-vous m'aiguiller sur ce point, je ne trouve pas la méthode qui clear les values du formulaire apres un POST. SetDefault à vide ne fonctionne pas... J'utilise Quickform avec un renderer Smarty...
Merci
Salut Yves,
étonnant, lors d'une inscription en ligne par exemple!? si tous les valeurs restent, on peut les poster à l'infini et ajouter les mêmes données à l'infini. Le test si données existent déjà n'est pas toujours possible.

jamais besoin?
header("Location: lapage"); c'est impossible puisque le header already exists
La méthode qui boucle sur les élements? ça n'est pas justement la méthode setDefaults() qui fait ça?
Je ne sais pas ou chercher? Est ce du à Smarty ou à Quickform ce callback?
Salut,

En relisant la question et ma réponse, je me rends compte avoir
répondu un peu à côté.
Quand tu fais un "submit", tu exécute l'action après la methode
validate(). Ensuite, si dans le code il n'y a pas de setDefaults, il n'y
a pas de raison que le formulaire soit encore rempli...
Donc éventuellement, mettre une condition pour le setDefaults.
Sinon, si il y a toujours le setDefaults, la solution peut-être dans la
fonction de callback de lister les éléments et de leurs attribuer une valeur nulle.
Perso, maintenant j'utilise une validation de formulaire en ajax. Donc pas de souci de reload intempestifs des pages
j'utilise le renderer de HTML_Template_Flexy. je ne connais pas bien Smarty.
@++
Bonjour,
pour répondre à Toffi : tu peux bien renvoyer un header si tu fais comme cela :
if($form->validate) {.... header("location:...");} else $form->display();
A priori, il n y a aucune raison d'envoyer qqchose en sortie avant le process et au pire on peut je pense utiliser la bufferisation.
Bonjour,
Euh !! je débute alors comment implémenter cette fonctionnalité ?
Où déposer le repertoir temechargé ?
J utilise Quickform couplé à SMARTY
Merci d'avance
Bonjour,
Est il possible de formater les formulaires générés en RTF??
Existe il une classe permettant ce formatage, L'impression?
Merci
Cordialement