Formulaire CMS
De Wiki.
Génération automatique d'un formulaire à partir d'un fichier xml
- utilisé dans le projet Allard, page de contact
Sommaire |
contact.xml
- /modules/contact/contact.xml
- à créer
- à appeler dans le fichier formulaire.php
- à modifier en fonction de la liste des champs voulus
- contient la structure du formulaire
<?xml version="1.0" encoding="ISO-8859-1" ?> <formulaire name="contact" post="/content/fr/page_post.php" minisite="fr"> <fields>
Paramètres du formulaire (optionnels)
- formulaire > name : nom du formulaire
- formulaire > post : page à laquelle on envoie les infos, par défaut, c'est la même page
- formulaire > minisite: minisite sur lequel on travail
text
- field > name : libellé
- fied > id : id
- field > type : type du champs (text, textarea, button, select, file, captcha, hidden, submit)
- field > oblig : champs obligatoire ou non
- field > br : retour à la ligne après le label
- field > class : ajout d'une classe si nécessaire sinon class default
- label > class: ajout d'une classe si nécessaire
<field name="Nom" id="nom" type="text" oblig="true" br="true" class="nom"> <label for="nom" class="nom" /> <option maxlength="100" /> </field>
email
- vérifie la bonne syntaxe de l'email
<field name="E-mail" id="mail" type="email" oblig="true" class="mail" br="true" > <label for="mail" /> </field>
téléphone
- vérifie la bonne syntaxe d'un numéro de téléphone
<field name="Téléphone" id="tel" type="phone" oblig="true" class="tel" br="false" > <label for="tel" /> </field>
entier
- vérifie qu'il s'agit bien d'un entier
<field name="Code postal" id="cp" type="integer" oblig="true" class="cp" br="false" > <label for="cp" /> </field>
radio bouton
<field name="Vous souhaitez contacter notre :" id="contact" type="radio" oblig="true" br="true" class="contact_div"> <label for="contact" class="label_contact_div" /> <item id="commercial" value="Service Commercial" /> <item id="marketing" value="Service Marketing" /> <item id="industriel" value="Service Industriel" /> <item id="rh" value="Ressources Humaines" /> <item id="autres" value="Autres" /> </field>
select simple
<field name="Civilité " id="civilite" type="select" oblig="true" br="true" class="civilite"> <label for="civilite" class="civilite" /> <item id="mlle" value="Melle" /> <item id="mme" value="Mme" /> <item id="mr" value="Mr" /> </field>
select à partir d'une classe
- class > name : nom de la classe
- class > item : champs à afficher (sans préfixe)
- class > orderby : champs à ordonner
- class > orderbysens : sens de l'ordre
- class > value="4" : condition ( WHERE cms_statut = 4) , ne prend en compte que les conditions de type "égale"
<field name="Pays" id="pays" type="select" oblig="true" br="true" class="pays" > <label for="pays" class="pays" /> <class name="cms_pays" item="nom_fr" orderby="nom_fr" orderbysens="ASC" statut="4" /> </field>
textarea
<field name="Message" id="message" type="textarea" oblig="false" class="mail" br="true" > <label for="message" class="message" /> <option cols="20" rows="5" /> </field>
fichier à uploader
- field > small : texte supplémentaire entre balises small
<field name="Pièces jointes" small="3 pièces jointes max" id="fichier1" type="file" oblig="false" br="true" > <label for="fichier1" /> </field>
captcha
- field > display : affiche ou pas le captcha
- ligne obligatoire qu'on utilise le captcha ou pas
- pubkey / privkey : à rajouter avec le recaptcha de Google
- theme : 'red' | 'white' | 'blackglass' | 'clean' | 'custom' > customisation de l'encart
- lang : en par defaut
- http://code.google.com/intl/fr/apis/recaptcha/docs/customization.html
<field name="" id="captcha" type="captcha" oblig="true" br="true" class="tel" display="true" pubkey="6LflnscSAAAAAESWHViRto-ucLjaUTP6X2DieMzn" privkey="6LflnscSAAAAAM6_E20oLudnJr6Jm_zOAIxxTdUE" theme="clean" lang="fr" />
hidden
- option > value : ajout d'une valeur prédéfinie
<field name="Demande" id="demande" type="hidden" oblig="false" br="false"> <label for="demande" /> <option value="1" /> </field>
submit
<field name="Envoyer" id="envoyer" type="submit" oblig="false" br="true" class="submit" />
contenu de la page de validation (utilisée dans le CMS)
<texteok>Merci pour votre message, vous allez recevoir un email</texteok>
contenu de l'email d'accusé de réception (utilisée dans le CMS)
<textear>Voici un email de confirmation</textear>
</fields> </formulaire>
formulaire.php
- /modules/contact/formulaire.php
- à créer
- créé les fonctions js pour vérifier le formulaire, ainsi que le html
déclaration du fichier contact.xml
<?php $file = $_SERVER['DOCUMENT_ROOT']."/modules/contact/contact.xml"; ?>
appel de la class form
<?php require_once('cms-inc/form/class.Form.php'); ?>
récupère la liste des champs
<?php $formulaire = new Form(); $formulaire->getFields($file); ?>
style pour les erreurs
<style> .erreur { color:red; } </style>
appel du js
<?php $formulaire->prepareJs(); ?>
envoi du mail
if (isset($_POST["nom"]) && $_POST["nom"] !="") { // envoi unset($_POST); }
formulaire html
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" name="contact" id="contact" enctype="multipart/form-data">
affichage du formulaire en html
<?php $formulaire->prepareForm(); ?>
*champs obligatoires
</form>
class.Form.php
- /include/cms-inc/form/class.Form.php
- à appeler dans la page formulaire.php
- objet formulaire avec fonctions permettant de générés le html et le js correspondant à chaque champs
<?php require_once('cms-inc/form/class.Form.php'); ?>
fojsutils.js
- /custom/js/minisite/fojsutils.js
- à créer
créé la boite de dialogue avec tous les messages d'erreur
function setDialogMessage (_type, _msg) {}
action lorsque le champs est incorrect
var validateKO = function (_field, _error) {}
action lorsque le champs est correct
var validateOK = function (_field, _error) {}
tableau avec les messages d'erreur
var validationMessages = new Array(); validationMessages['invalid_email'] = "syntaxe incorrecte"; validationMessages['confirm_differs'] = "confirmation différente"; validationMessages['invalid_value'] = "non valide"; validationMessages['invalid_integer'] = "il ne s'agit pas d'un entier"; validationMessages['invalid_number'] = "il ne s'agit pas d'un nombre"; validationMessages['invalid_decimal'] = "il ne s'agit pas d'un décimal"; validationMessages['not_lower_value'] = "valeur n'est pas inférieure"; validationMessages['not_lower_equal'] = "valeur n'est pas inférieure ni égale"; validationMessages['not_higher_value'] = "valeur n'est pas supérieure"; validationMessages['not_higher_equal'] = "valeur n'est pas supérieure ni égale"; validationMessages['invalid_ccard'] = "il ne s'agit pas d'un numéro de carte bleue"; validationMessages['empty_value'] = "Champs obligatoire"; validationMessages['not_alpha_value'] = "le champs ne devrait pas contenir de valeur numérique"; validationMessages['invalid_phone'] = "syntaxe du numéro non valide"; validationMessages['invalid_length'] = "longueur du champs non valide"; validationMessages['invalid_captcha'] = "Code de sécurité : Champs incorrect";