Création de formulaire simplifiée

Soyez le premier à donner votre avis sur cette source.

Vue 14 292 fois - Téléchargée 1 452 fois

Description

Comme l'indique le titre, ce code va vous permettre de gagner du temps lors de la création de vos formulaires.
Cette source s'adresse à des membres débutants connaissant la programmation orienté objet.

Pour utiliser cette source placez le dossier moteur et son contenu dans le dossier de votre projet, un simple require("moteur/config.php"); suffit pour l'utiliser.

J'ai mis la doc doxygen dans la source bien que le code ne soit pas très long, cela vous gagnera du temps de compréhension.

Le but de la source :
  • économiser du temps lors de la création d'un formulaire(génération simplifiée, alignement des inputs automatique, ...)


Ce code va me servir pour un autre projet, il me sert de test, je vous le met à disposition s'il peut aider quelqu'un.

A+

Source / Exemple :


<?php
	//Exemple d'utilisation
        require("moteur/config.php");
	
	$form1 = new Form();
	
	$text1 = new InputText("text1");
	$text1->SetLabel("Test 1")->setName("toto");
	$text2 = new InputText("text2");
	$text2->SetLabel("Test long 2");
	
	$form1->AddElement($text1,$text2);			
	echo $form1;
?>

Conclusion :


Bonne utilisation à tous.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

webdeb
Messages postés
509
Date d'inscription
samedi 5 avril 2003
Statut
Membre
Dernière intervention
31 mars 2009
1 -
Hum on ne peut faire que des inputs dans ton formulaire ? Où sont les hidden, select, radio, checkboxes... ?

C'est loin d'être terminé et encore utilisable comme code. Pour générer mes formulaires, je préfère davantage m'appuyer sur le composant Zend_Form du framework Zend ou bien sur le framework de création de formulaire du framework symfony.

++
cs_Galip
Messages postés
8
Date d'inscription
vendredi 12 janvier 2007
Statut
Membre
Dernière intervention
21 avril 2009
-
Comme je l'ai dit cette source m'a servi de test pour voir si c'était possible de faire facilement un formulaire qui s'aligne automatiquement.
Maintenant, je vais continuer en faisant mon moteur de template.
De plus, il est possible de mettre des hidden, radio, checkbox, tu peux spécifier le type dans le constructeur du input.

A+

PS : Si tu as compris la source tu verras qu'il est assez simple de rajouter des select, ...
neigedhiver
Messages postés
2492
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
11 -
Salut,

J'ai pas regardé ton code, mais tu peux jeter un oeil là, éventuellement pour t'inspirer : http://www.phpcs.com/codes/GENERATEUR-FORMULAIRE-AJAX-PHP5_46124.aspx
webdeb
Messages postés
509
Date d'inscription
samedi 5 avril 2003
Statut
Membre
Dernière intervention
31 mars 2009
1 -
>> De plus, il est possible de mettre des hidden, radio, checkbox, tu peux spécifier le type dans le constructeur du input.

Ce n'est pas très "user friendly" comme syntaxe. Personnellement, je préfère avoir une méthode, voire même une classe, pour chaque type d'objet. Par exemple :

Une classe InputText
Une classe InputRadio
Une classe InputCheckbox
...

Chacune de ces classes dérivent d'une classe abstraite FormElement et implémente des interfaces communes (Renderable par exemple). Ainsi ton code sera beaucoup plus lisible en ayant ce genre de syntaxe :

$oForm = new Form('action','method');
$oInputTextNom = new InputText('nom');
$oInputTextNom->setLabel('Votre nom');
$oInputTextNom->setId('nom');

$oInputTextPrenom = new InputText('prenom');
$oInputTextPrenom->setLabel('Votre prénom');
$oInputTextPrenom->setId('prenom');

$oInputTextMentions = new InputCheckbox('mentions');
$oInputTextMentions->setLabel('Accepter les mentions');
$oInputTextMentions->setValue("J'accepte les mentions');
$oInputTextMentions->setChecked(false);
$oInputTextMentions->setDefaultValue('off');

$oForm->addElement($oInputTextNom);
$oForm->addElement($oInputTextPrenom);
$oForm->addElement($oInputTextMentions);

echo $oForm (appel implicite à __toString() qui appelle une méthode render() qui appelle même chaque méthode render() de chaque élément du formulaire).

C'est quand plus sympa comme syntaxe tu ne trouves pas ?

Tu peux même t'amuser à faire des retours d'instance dans tes méthodes. Tu ajoutes à la fin de tes méthodes "return $this;" pour pouvoir utiliser cette syntaxe :

$oInputTextMentions = new InputCheckbox('mentions');
$oInputTextMentions->setLabel('Accepter les mentions')->setValue("J'accepte les mentions')->setChecked(false)->setDefaultValue('off');

Ainsi tu peux chaîner les appels de méthodes sur un même objet.

++
cs_Galip
Messages postés
8
Date d'inscription
vendredi 12 janvier 2007
Statut
Membre
Dernière intervention
21 avril 2009
-
Bonjour, comme je l'ai dit dans la description ce code m'a simplement servi de test, donc je le voulais le plus simple possible, bien entendu une classe abstraite Input aurait été préférable avec ensuite comme classe dérivé InputText, InputCheckBox, ...

L'intéret de cette source est la fonction javascript. Il suffit de lui passer les id des inputs à aligner est automatiquement, le style des inputs est modifié pour qu'ils apparaissent alignés. Plus besoin de tatonner pour trouver le bon nombre de pixels à mettre.

Merci pour la source Neigedhiver j'ai regardé la démo ça à l'air très complet comme générateur.

++

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.