Jump to content

Formulaire de contact : Champs Civilité obligatoire


Recommended Posts

Bonjour à tous et toutes,

J'ai personnalisé mon formulaire de contact avec des champs supplémentaires.
Parmis ces champs, j'ai deux champs qui appellent une liste déroulante : Civilité et Département.
Ces champs sont obligatoires.
Seulement voila, la premiere valeur de chacun de ces champs est "-- Choisir --"
Le système considère donc "-- Choisir--" comme une selection et passe donc au travers la vérification obligatoire.
Ma question est la suivante :
Savez vous comment exclure cette premiere valeur "choisir" de la vérification afin que l'utilisateur soit obligé de selectionner une autre valeur de la liste. (Mademoiselle, Madame, Monsieur) ?

Merci.

Mon contact form:

{l s='Civilite *'}

-- Choisir --
Monsieur
Madame
Mademoiselle



Mon code php :

<?php

$useSSL = true;

include(dirname(__FILE__).'/config/config.inc.php');
include(dirname(__FILE__).'/header.php');

$errors = array();

$smarty->assign('contacts', Contact::getContacts(intval($cookie->id_lang)));

if (Tools::isSubmit('submitMessage'))
{
   if (!($from = Tools::getValue('from')) OR !Validate::isEmail($from))
       $errors[] = Tools::displayError('invalid e-mail address');
   elseif (!($civilite = nl2br2($civilite)))
       $errors[] = Tools::displayError('Merci de renseigner votre civilité');
   elseif (!($nom = nl2br2($nom)))
       $errors[] = Tools::displayError('Merci de renseigner votre nom');
   elseif (!($prenom = nl2br2($prenom)))
       $errors[] = Tools::displayError('Merci de renseigner votre prénom');
   elseif (!($telephone = nl2br2($telephone)))
       $errors[] = Tools::displayError('Merci de renseigner votre numéro de téléphone');
   elseif (!($ville = nl2br2($ville)))
       $errors[] = Tools::displayError('Merci de renseigner votre ville');
   elseif (!($dep1 = nl2br2($dep1)))
       $errors[] = Tools::displayError('Merci de renseigner votre département');
   elseif (!($id_contact = intval(Tools::getValue('id_contact'))) OR !(Validate::isLoadedObject($contact = new Contact(intval($id_contact), intval($cookie->id_lang)))))
       $errors[] = Tools::displayError('please select a contact in the list');
   else
   {
       if (intval($cookie->id_customer))
           $customer = new Customer(intval($cookie->id_customer));
       if (Mail::Send(intval($cookie->id_lang), 'contact', 'Message from contact form', array('{email}' => $from, '{civilite}' => $civilite, '{nom}' => $nom, '{prenom}' => $prenom, '{societe}' => $societe, '{ville}' => $ville, '{dep1}' => $dep1, '{distrib}' => $distrib, '{telephone}' => $telephone, '{message}' => stripslashes($message)), $contact->email, $contact->name, $from, (intval($cookie->id_customer) ? $customer->firstname.' '.$customer->lastname : $from)))
           $smarty->assign('confirmation', 1);
       else
           $errors[] = Tools::displayError('an error occurred while sending message');
   }
}

$email = Tools::safeOutput(Tools::getValue('from', ((isset($cookie) AND isset($cookie->email) AND Validate::isEmail($cookie->email)) ? $cookie->email : '')));
$smarty->assign(array(
   'errors' => $errors,
   'email' => $email,
   'civilite' => Tools::getValue('civilite'),
   'nom' => Tools::getValue('nom'),
   'prenom' => Tools::getValue('prenom'),
   'societe' => Tools::getValue('societe'),
   'ville' => Tools::getValue('ville'),
   'dep1' => Tools::getValue('dep1'),
   'distrib' => Tools::getValue('distrib'),
   'telephone' => Tools::getValue('telephone')
));

$smarty->display(_PS_THEME_DIR_.'contact-form.tpl');
include(dirname(__FILE__).'/footer.php');

?>

Link to comment
Share on other sites

Bonjour,

Je sais pas si c'est comme ça qu'il faut faire mais comme j'ai le nez dans la modification du formulaire depuis hier, je pense qu'il faudrait peut-être poser une règle via les expressions régulières dans le fichier validate.php (dans le dossier classes).
Une fois la règle définie vous l'appliquez dans le fichier customer.php, à la suite des autres. ça donne quelque chose comme ça:

'civilite' => 'isCivilite'



si la fonction qui applique la règle s'apelle 'isCivilite'...

J'ai trouvé un super outil pour tester les expressiosn régulières :

http://www.annuaire-info.com/outil-referencement/expression-reguliere/

De mon côté j'ai du mal à insérer la valeur de la liste déroulante dans ma BDD. Y a t'il une manip spéciale pour ce type de champ??

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...