FormGenerator - Version 3.0

Description

Voici la troisième version de mon générateur de formulaire.
La version 2 n'a jamais vue le jour, car bien que beaucoup plus aboutie,
au fur et à mesure de son utilisation pour mon site et donc des tests dessus,
je me suis aperçus que je devais souvent la modifier pour l'adapter à l'utilisation
de Bootstrap ou autres framework, nécessitant l'utilisation de balises <div>
ou autres au sein du formulaire.

Cette version 3.0, est beaucoup plus light que la version 2 et 1, tout en gérant
absolument tout. En effet, n'importe quelle
balise peut être ajoutée, et vous pouvez même en détourner l'utilisation
pour générer des pages HTML complètes (mais il génère pas les en-têtes : DOCTYPE
etc.).

Cette ultime version, fonctionne différemment. En effet, je me suis aperçus
que le DOM Parser de PHP, gère les documents au format HTML, avec la syntaxe
du HTML, mais sous forme XML (avec donc l'arbre DOM). C'est donc parfait
pour un générateur de formulaire très complet et qui s'adaptera sans soucis
sans devoir être modifié.

Ainsi, est née cette version 3.0, qui gère tout façon XML. Il est donc nécessaire
d'avoir manier un petit peut DOM, pour comprendre le fonctionnement.
Le répertoire d'exemples, donne deux exemples complets d'utilisation :
- Comment générer totalement un formulaire depuis le PHP
- Comment réutiliser un formulaire HTML déjà existant dans un fichier pour
rajouter des champs et modifier ceux existants

On peut très facilement aussi, "merge" plusieurs formulaires entre eux,
il suffit donc juste d'ouvrir le formulaire dont on veut récupérer que certains
éléments, à partir de là, il suffit de récupérer les noeuds concernés.
Pour rappel un noeud parent contient ses noeuds enfants.

On ouvre ensuite le formulaire principal, et on y ajoute le/les noeuds concernés
et hop on a un mélange de plusieurs formulaires.
On peut appliquer cette astuce, en prenant un formulair et supprimant
plusieurs noeuds dedans.

Tan que vous ne faites pas un "saveOnDisk", c'est juste en mémoire.
La méthode "render", renvoi le contenu du formulaire stocké en mémoire.

J'ai gardé les noms habituels de DOM comme getElementsByTagName ou encore setAttribute.
Cependant il y a un petit changement, il faut donc bien lire la PHPDoc.
Cette dernière n'est pas générée, mais si vous avez un IDE avancé comme Eclipse,
il suffit de rajouter au PHP Include Path, le générateur et il vous lit la doc.

Quand on crée, un noeud, on peut y ajouter des attributs comme d'habitude (
setAttribute). Sauf que pour ajouter au formulaire lui même (<form>),
on a un DOMDocument et non un DOMElement, aussi la méthode setAttribute propre à la classe,
demande juste un argument en plus (en premier) : le DOMElement sélectionné.

Ainsi, au lieu de passer par l'habituel setAttribute du DOMElement, on peut
recourir à cette solution (en général pas obligatoire sauf pour le formulaire
en lui même).

C'est la même chose pour les autres méthodes qui demandent un DOMElement en premier
argument.

A vous de regarer les deux exemples, qui traitent 95% des possibilités du générateur.

Pour résumer le tout, on peut tout faire sans exception, même utiliser Bootstrap ou autres.
On peut sauvegarder le formulaire généré, changer un déjà enregistrer,
ajouter des champs à un formulaire via un autre formulaire, ou carrément ajouter
un autre formulaire sur la page, à la suite du formulaire de base.

De plus, j'ai crée un "insertAfter", méthode hélas toujours absente des DOM Parser,
que se soit en PHP ou JavaScript. Ce qui permet donc rapidement, d'ajouter avant
ou après (insertBefore et insertAfter).

J'espère que cette nouvelle version vous plaira. Elle n'est pas compatible
avec la première (comme la seconde) version, mais faire la migration
est plutôt facile et rapide, compte tenu que le but est d'avoir un formulaire
de base déjà fait, dont on modifie les propriétés au besoin.

On gagne aussi en réutilisabilité du formulaire, ce qui est très pratique.

Codes Sources

A voir également

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.