Bonjour à tous.
Quand on utilise du MVC, on a souvent besoin de helpers pour se simplifier la vie. Générer un formulaire et permettre son remplissage avec plusieurs jeux de données (un objet modèle et des paramètres de requête par exemple) devient vite un casse-tête. A cet effet, j'ai créé un ensemble de classe destinées à générer et à manipuler un formulaire XHTML.
Un exemple vaut plus qu'un long discours:
Va générer:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 $form = new FormHelper(); $form->addFieldset("Section A") ->addLine('test1') ->addLine('test2', 'test 2', 'radio-group', array('a' => 1, 'b' => 2, 'c' => 3)) ->addLine('test3', 'test 3', 'textarea', 'POK'); $form->addFieldset("Section B") ->addLine('test4', 'test 4', 'select', array('a' => 1, 'b' => 2, 'c' => 3)) ->addLine('test5', 'test 5', 'checkbox-group', array('a' => 1, 'b' => 2, 'c' => 3)) ->addLine('test6', 'test 6', 'file'); $form->appendChild(InputHelper::export('save', 'submit', 'save')); $form->autoFill(array( 'test1' => "Un texte quelconque", 'test2' => 2, 'test3' => "Lorem ipsum sit amet ....", 'test4' => 2, 'test5' => 2, )); echo $form;
Il est possible de créer / manipuler n'importe quel élément de formulaire de manière atomique au travers des classes suivantes:
- CheckboxGroupHelper.class.php
- FieldsetHelper.class.php
- FormHelper.class.php
- FormLine.class.php
- InputHelper.class.php
- LabelHelper.class.php
- OptionHelper.class.php
- RadioGroupHelper.class.php
- SelectHelper.class.php
- TextareaHelper.class.php
Ces classes sont dans le package joint à ce post.
L'avantage marteau de cette structure est la possibilité de remplir automatiquement un formulaire ou un fieldset avec des données en provenance d'un tableau ou d'un objet (Model dans mon cas qui est la classe de base de mes modèles.)
La plupart des méthodes des objets helpers renvoient leur référence de sorte à pouvoir faire du chainage.
Exemple:
Va créer un formulaire puis y mettre un fieldset puis y mettre une nouvelle ligne puis obtenir l'input pour changer son ID.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 echo FomHelper::export('index.php') ->appendChild(FieldsetElement::export('légende')) ->appendChild(FormLine::export('test', 'Un Test')) ->getInput() ->setId('un_id');
Si ça intéresse du monde, je suis disposé à documenter ces classes et fournir un manuel
Merci de ne pas venir hurler que ça existe déjà dans la plupart des frameworks actuels et que j'ai réinventé la roue, j'en suis conscient. J'avais simplement besoin d'une structure simple et implémentable immédiatement.
-- Edit
Vous trouverez la documentation DoxyGen jointe à ce post.
Partager