Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

FORMOL, PACKAGE PHP5 DE GESTION DE FORMULAIRES XHTML


Information sur la source

Catégorie :Formulaires Classé sous : formulaire, générateur, validation, zend framework, mvc Niveau : Initié Date de création : 06/09/2007 Date de mise à jour : 17/10/2007 22:19:36 Vu / téléchargé: 7 284 / 506

Note :
8,75 / 10 - par 4 personnes
8,75 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
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
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

17 septembre 2007 22:30:22 :
Nouvelle version (0.7.0) : - correction de bugs - ajout de deux nouveaux validateurs : "checked" (oblige à cocher une checkbox) et "url" (valide une url en http, https, ftp)
18 septembre 2007 22:05:48 :
Nouvelle version 0.7.1 : correction de bugs mineurs
17 octobre 2007 22:19:38 :
Nouvelle version : 0.7.5 - Correction de bugs mineurs - Ajout d'un validateur "date". exemples : $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)') - Introduction d'un système de plugins - Ajout d'un plugin "fValidator", qui permet le contrôle de la saisie côté client (javascript). Exemple d'utilisation (vue) : $fValidator = $form->activatePlugin('fValidator'); echo $fValidator->getJavascript();

Commentaires et avis

signaler à un administrateur
Commentaire de malalam le 07/09/2007 13:46:28 administrateur CS

Hello,

c'est du joli travail.
Il y a 2-3 choses qui me chagrinent quand même (je n'ai pas tout exploré non plus): tu codes en PHP5, en utilisant pas trop mal ses possibilités (il y a même des itérateurs!), mais toutes tes comparaisons sont "loose" : == au lieu de ===. C'est dommage.
Il y a quelques bouts de code inutiles (if (!is_null(self::$instance)) {self::$instance = null;} On ne rentre jamais dans cette condition).
Je préfère séparer les packages (validations, créations), mais ça, bon...
Enfin, à mon sens, il manque quelques éléments dans ton package de validation. Jette un oeil à mon code formchecker sur ce site, qui ressemble bcp à ta partie validation, il y a quelques ajouts par rapport aux possibilités que tu offres.

Mais bien sinon :-)

signaler à un administrateur
Commentaire de tmaziere le 07/09/2007 19:10:51

Merci pour tes encouragements et tes critiques justifiées, j'en attendais pas moins ;)
Je rajoute tout ça à ma todo-list...

Pour les validateurs, on est d'accord, ce n'est qu'un début. J'indique comment en ajouter dans <a href="http://formol.oeilduwake.com">la FAQ du package</a>.
De toute façon, je vais compléter "l'offre" pour la version suivante, en m'inspirant de formchecker, par exemple.

A+

signaler à un administrateur
Commentaire de zeguizmo le 10/09/2007 10:05:12

Salut,

Joli travail mais j'ai un petit souci. J'ai essayé de tester le formulaire d'inscription que tu proposes dans la FAQ, celui ci retourne une erreur lors de la validation :
Notice : Use of undefined constant self - assumed 'self'
Pointant sur la ligne : Form::free($_SESSION);

Je pense que c'est un truc du genre $array[toto] qui devrait etre transformé en $array['toto'] mais je ne vois absolument pas ou :/

De plus, dans les évolutions futures, la gestion des actions javascript sur les différents éléments du formulaire serait sympa (onfocus, onselect ..)

Merci à toi pour ton travail.
PS : contact@oeilduwake.com ne fonctionne pas.

signaler à un administrateur
Commentaire de zeguizmo le 10/09/2007 12:57:39

Apres verification, c'est le form.manager.class.php qui pose problème, à la ligne 64.

foreach ($field->preProcessors as $processor){
    if (is_callable(array(self, $processor))) {
        $newValue = $this->$processor($newValue);
    }
    else if (is_callable($processor)) {
        $newValue = $processor($newValue);
    } else {
        throw new FormException("Process unknown : '".htmlentities($processor)."'");
    }
}

La ligne 64 étant la ligne : if (is_callable(array(self, $processor))) {

Le tableau semble poser probleme apparemment. Si on mets 'self' au lieu de self, l'erreur disparait, mais ca pose probleme non ? Ce n'est pas l'objet qui sera dans le tableau mais la chaine de caractere self ...

signaler à un administrateur
Commentaire de tmaziere le 10/09/2007 19:18:54

Bien vu, il faut effectivement modifier cette ligne en :

if (is_callable(array('self', $processor))) {

Ce bloc détermine si il existe une méthode de la classe FormManager qui correspond au 'preProcess' enregistré. Dans le cas contraire, il cherche une fonction accessible globalement. 'self' est un paramètre de is_callable.

Pour le javascript, c'est prévu. Je pencherais plutôt vers Mootools/fValidator (http://zend.lojcomm.com.br/fValidator/), qui est non obstrusif.

Pour l'email "contact", je fais le nécessaire. Merci pour ton retour et ces infos !

signaler à un administrateur
Commentaire de zeguizmo le 20/09/2007 11:24:33

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 "<input type=\"text\" name=\"".$this->_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

signaler à un administrateur
Commentaire de webdeb le 22/09/2007 13:06:57 9/10

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 ^^

signaler à un administrateur
Commentaire de tmaziere le 17/10/2007 22:12:15

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,

signaler à un administrateur
Commentaire de tmaziere le 17/10/2007 22:27:40

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.

signaler à un administrateur
Commentaire de alterHD le 19/08/2008 15:07:16

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

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Problème de validation de formulaire [ par ehmarc ] Hello world!!!Bon j'ai un petit problème jai formulaire tres simple une case identification un bouton envoyerj'arrive à m'identifier nickel quand quan Prob de redirection et validation [ par LeManchot ] Voila jai encoren un souci:jai un formulaire que je valide via un bouton (pr linstant ok) mais par ce meme bouton je dois rediriger la page ou se toru Prob Debutant - Validation d'1 formulaire par Menu Déroulant . [ par marcooo ] Bonjour a tous .J'esplique le problème ... Tout d'abord je tien a dire ke je débute dans le PHP/MySQL.Alors voila, je voudrai créer une sorte de moteu Validation Formulaire [ par kiboumz ] Bonjour, J'ai cr&#233;e un formulaire duquel j'envoie des donn&#233;es vers une base de donn&#233;es, cependant j'aimerais pouvoir valider mes donn& Générateur de formulaire et base de donnée [ par helphp ] Bonjour &#224; tous,Je suis &#224; la case d&#233;butant pour la programmation. Je suis entrain de construire un site qui aura le r&#233;pertoire de p Double envoie lors d'une validation de formulaire? [ par Monico9385 ] Bonjour &#224; tous, j'ai un petit soucis concernant un double envoie lors de la validation d'un formulaire, je m'explique : j'ai sur un site un for Activation d'un compte par mail [ par aissiou1979 ] Voila.J'ai realisé un formulaire d'inscription pour jouer à un concours.A la suite de la validation de ce formulaire un mail est envoyé à  la personne validation de courriel [ par luciano12 ] Bonjour,J'aurais besoin de votre aide pour m'aider à faire la chose suivante:Je voudrais que les visiteurs qui visitent mon site Intenret puissent rem Balise select liées [ par nagrom_om ] Salut, Voila mon probleme : J'ai une page dans laquelle il y a une balise select qui affiche une liste d'éléments, le choix d un élément provoque l af confirmation avant validation d'un formulaire [ par greg975 ] bonjour à tous!quelqu'un pourait-il me montrer un exemple de script qui permet de  confirmer la validation d'un formulaire (genre oui ou non) avant sa


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,749 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.