Formol, package php5 de gestion de formulaires xhtml

Soyez le premier à donner votre avis sur cette source.

Vue 12 293 fois - Téléchargée 769 fois

Description

Formol est un package qui permet d'encapsuler la manipulation et la validation de formulaires XHTML.
Les fonctionnalités principales sont :
- mapping objet avec syntaxe simplifiée ($form->champ affiche le champ)
- stockage et chargement des formulaires au format XML
- prétraitement personnalisé des valeurs saisies
- validation multicritères automatisée
- utilisation des mécanismes de persistance (sessions)
- personnalisation de l'affichage à l'aide de motifs XHTML simples (ex : <strong>{{label}}</strong><br />{{field}})

Formol est compatible avec le Zend Framework, y compris en MVC.

Conclusion :


Une FAQ et des exemples d'utilisation sont disponibles sur http://formol.oeilduwake.com

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_alterHD
Messages postés
1
Date d'inscription
mardi 19 août 2008
Statut
Membre
Dernière intervention
19 août 2008
-
Bonjour,

Super, sauf que je ne comprends pas pourquoi formol génère automatiquement un id pour le formulaire ?

Enfin, voulant l'intégrer dans une page de Joomla(framework CMS), je me trouve embêter avec le système de gestion de session formol (qui doit rentrer en conflit avec celui de joomla :-((.
La même page en externe permet bien d'enregistrer les var de session

A suivre
tmaziere
Messages postés
4
Date d'inscription
dimanche 5 janvier 2003
Statut
Membre
Dernière intervention
17 octobre 2007
-
Re,

J'en profite pour vous redonner les exemples pour la nouvelle version :

- validateur "date" :

$field->registerValidator('date', 'vous devez entrer une date valide (jj/mm/aaaa)')
$field->registerValidator('date:fr2,-', 'vous devez entrer une date valide (jj-mm-aa)')
$field->registerValidator('date:eng4,.', 'vous devez entrer une date valide (mm.jj.aaaa)')

- plugin "fValidator", au sein de la vue/template/page :

$fValidator = $form->activatePlugin('fValidator');
echo $fValidator->getJavascript();

N'hésitez pas si vous souhaitez quelques précisions.
tmaziere
Messages postés
4
Date d'inscription
dimanche 5 janvier 2003
Statut
Membre
Dernière intervention
17 octobre 2007
-
Bonjour à tous,

Merci pour vos commentaires, sachez que je note vos meilleures suggestions pour les intégrer au fur et à mesure. La version 0.7.5 introduit un validateur "date" et un système de plugins, inauguré par un plugin pour fValidator (http://zend.lojcomm.com.br/fvalidator/) qui permet une élégante validation côté client (js). La classe fValidator (présente dans l'archive) et Mootools sont requis pour ce plugin.
N'hésitez à me dire ce que vous en pensez !

Bonne fin de semaine,
webdeb
Messages postés
509
Date d'inscription
samedi 5 avril 2003
Statut
Membre
Dernière intervention
31 mars 2009
2 -
Je n'ai pas encore eu l'occasion de tester ton package mais ça ne serait tarder. D'après ce que j'ai pu voir sur le site dédié à l'application, ça semble être du sacré bon boulot. Bravo à toi. Par contre, je regrette une chose que tu pourrais ajouter pour améliorer tout ça. A savoir une méthode pour ajouter une zone de texte Wysiwig (avec TinyMCE par contre) ainsi qu'un champ texte de type date sur lequel un calendrier javascript apparait lorsque l'on clique dedans. Voir ici pour un exemple :

http://calendar.swazz.org/

Ca rendrait encore plus parfaite ton application et les formulaires plus "user friendly".

++

PS : je mets 9/10 parceque tu n'as encore terminé ton appli ^^
cs_zeguizmo
Messages postés
138
Date d'inscription
vendredi 1 août 2003
Statut
Membre
Dernière intervention
16 juillet 2009
-
Salut, c'est re-moi

Bon, après quelques jours d'utilisation, voici quelques remarques (modification que j'ai du effectuer) :

- Implantation du javascript necessaire (pas pour la validation, pour n'importe quel effet graphique, que l'on souhaite avoir sur nos zolis champs de formulaire, ou pour l'utilisation de l'AJAX par exemple (verification de la disponibilité d'un pseudo, par exemple))

Exemple (a insérer dans le renderfield de inputtext) :

$jsString="";
if (isset($args['js']))
{
foreach ($args['js'] as $val => $option) {
$jsString .= " ".$val."=".$option." ";
}
}
return "_field->name."" id="".$this->_field->name.""$class value="".$this->_field->value.""".$jsString.$disabled.$maxlength." />\n";

l'utilisation serait alors la suivante :

$js = array ('onKeyUp'=>'"mafonctionJS();"');
echo $F->champ_texte->render(array("js"=>$js));;

et on aurait un peu de JS sur nos champs.
A faire pour les autres renderer aussi

- Possibilité de nommer nos formulaires lors de l'enregistrement en session (on peut avoir plusieurs formulaires par pages), mais également possibilité de désigner le formulaire a enregistrer : tu utilises self::$instance dans la fonction save, on pourrait faire un truc du genre :

public static function save(&$persistenceManager,$name="",$F="") {
if ($name=="")
$name = 'form';
if ($F=="")
$F = self::$instance;

if (is_array($persistenceManager)) {
$persistenceManager[$name] = $F;
return true;
} else if (is_object($persistenceManager)) {
$persistenceManager->form = $F;
return true;
} else {
throw new FormException("Wrong parameter type : must be array or object");
}

}

c'est ce que j'ai fait, ca marche très bien, même si c'est peut-être pas ultra propre. Ca nous permet de désigner quels sont les formulaires a enregistrer en variable de session.

Il y a quelques petites broutilles dont je ne me rapelle plus qui m'ont demandé un peu de retouche, sinon le reste est vraiment bien !

Et bien sur, des validators plus travaillés, mais c'était déja dans tes objectifs si j'ai bien compris.

Amuse toi bien :)

Bonne journée

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.