PrestaShop Forum

The best place in the world to ask questions about PrestaShop and get advice from our passionate community!

PrestaShop Forum

Jump to content

 

Rendre un champ supplémentaire obligatoire lors de l’inscription

81 replies to this topic
#1
mathmenet

    PrestaShop Apprentice

  • Members
  • PipPip
  • 28 posts
Bonjour,
je souhaiterais rendre un des deux champs téléphone obligatoire (comme le nom ou prénom avec erreur si ça reste vide) lors de la création d'un compte mais je ne sais pas comment faire.
Si quelqu'un peut m'aider je lui en serait très reconnaissant.
Merci d'avance

#2
shagshag

    PrestaShop Apprentice

  • Freelance agréé
  • 304 posts
Bonjour

Pour rendre un des deux numéros obligatoires.

fichier themes/[mon theme]/authentification.tpl ligne 196



<input type="text" class="text" name="phone" id="phone" value="{if isset($smarty.post.phone)}{$smarty.post.phone|escape:'htmlall,UTF-8'|stripslashes}{/if}" />




devient



<input type="text" class="text" name="phone" id="phone" value="{if isset($smarty.post.phone)}{$smarty.post.phone|escape:'htmlall,UTF-8'|stripslashes}{/if}" />
*




ça a affiche une étoile devant le champ obligatoire.

Fichier /authentification.php ligne 51
    elseif (!@checkdate(Tools::getValue('months'), Tools::getValue('days'), Tools::getValue('years')) AND !(Tools::getValue('months') == '' AND Tools::getValue('days') == '' AND Tools::getValue('years') == ''))
$errors[] = Tools::displayError('invalid birthday');

devient
    elseif (!@checkdate(Tools::getValue('months'), Tools::getValue('days'), Tools::getValue('years')) AND !(Tools::getValue('months') == '' AND Tools::getValue('days') == '' AND Tools::getValue('years') == ''))
$errors[] = Tools::displayError('invalid birthday');
elseif (!Tools::getValue('phone') AND !Tools::getValue('phone_mobile'))
$errors[] = Tools::displayError('Please specify a least one phone number');


Pour faire la vérification.
Saṃdhā : Tout Internet sans stress

#3
mathmenet

    PrestaShop Apprentice

  • Members
  • PipPip
  • 28 posts
Merci beaucoup de cette aide très précieuse, je prendrais la première solution pour le moment, on verra la documentation quand j'aurais progressé en codage !!

Encore merci

#4
Pierre-Yves

    PrestaShop Addict

  • Members
  • PipPipPip
  • 739 posts
Bonjour,

Voici une modif qui pourrait te permettre de faire ce que tu aimerais.

Il faut modifier le fichier classes/Address.php.

Au début de celui-ci tu devrais trouver ceci :

protected $fieldsRequired = array('id_country', 'alias', 'lastname', 'firstname', 'address1', 'postcode', 'city');


Il suffit (je pense, car je n'ai pas testé) d'ajouter le nom des champs pour les téléphone, et ça donne cela :

protected $fieldsRequired = array('id_country', 'alias', 'lastname', 'firstname', 'address1', 'postcode', 'city', 'phone', 'phone_mobile');


Voilà, maintenant les champs "Téléphone domicile" & "Téléphone portable" devraient être obligatoire.

Et pour faire encore mieux, on va modifier le template afin d'afficher la petite "*" à coté de ces deux champs.
Pour cela, on modifie le fichier themes/prestashop/authentication.tpl.

Tu devrais trouver ces lignes là :



<input type="text" class="text" name="phone" id="phone" value="{if isset($smarty.post.phone)}{$smarty.post.phone|escape:'htmlall,UTF-8'|stripslashes}{/if}" />




<input type="text" class="text" name="phone_mobile" id="phone_mobile" value="{if isset($smarty.post.phone_mobile)}{$smarty.post.phone_mobile|escape:'htmlall,UTF-8'|stripslashes}{/if}" />
*




Changes les comme ceci :



<input type="text" class="text" name="phone" id="phone" value="{if isset($smarty.post.phone)}{$smarty.post.phone|escape:'htmlall,UTF-8'|stripslashes}{/if}" />




<input type="text" class="text" name="phone_mobile" id="phone_mobile" value="{if isset($smarty.post.phone_mobile)}{$smarty.post.phone_mobile|escape:'htmlall,UTF-8'|stripslashes}{/if}" />
*




Voilà, j'espère que ça règlera ton problème.
Je n'ai pas du tout testé ces modifications, donc il est possible que ça ne fonctionne pas. Tiens moi au courant ;)

:exclaim: Lors d'une mise à jour de PrestaShop, ces deux fichiers seront écrasés et donc les modifs aussi.

EDIT : Ben ShagShag à été plus vite :D. Mais tu es certain Shag² qu'il ne faut pas modifier le tableau $fieldsRequired ?
Posted Image

#5
shagshag

    PrestaShop Apprentice

  • Freelance agréé
  • 304 posts
@Pierre-Yves : je m'étais complètement planté dans ma réponse et du coup pendant que je corrigeai (ça fonctionne maintenant) vous avez répondu tout les 2.
En plus ta solution est plus propre et je la préfère à la mienne.

Bref je sors oubliez moi -->[]

EDIT : Par contre ta solution rend les 2 champs obligatoires et la mienne seulement l'un des deux comme mathmenet le voulait :p
Saṃdhā : Tout Internet sans stress

#6
Pierre-Yves

    PrestaShop Addict

  • Members
  • PipPipPip
  • 739 posts
Oki, pas de soucis! :)
Posted Image

#7
mathmenet

    PrestaShop Apprentice

  • Members
  • PipPip
  • 28 posts
Merci Pierre-Yves, effectivement tout marche nikel
Pour ce qui du fichier classes/Address.php, j'ai juste mis le mobile phone en plus du reste.

Merci aussi à shagshag, l'idée était là! tu te rattraperas au prochain coup. ;-)

Merci de vos réponses si rapide.

#8
junnecito

    PrestaShop Fanatic

  • Moderators
  • 1193 posts
Bjr:
Petite question ? la saisir de un numéro obligatoire me parais bien, ais si on mais un numéro quelconque ? ex. 0123456789 ?
Ou il faux rendre obligatoire qq parametre base sur les numéros de téléphones ?
Question bête mais peux nous aider

#9
mathmenet

    PrestaShop Apprentice

  • Members
  • PipPip
  • 28 posts
Salut,
je pense surtout que tous les pays non pas les mêmes numéros.
Tu peux mettre ton numéro au format international.
Donc je pense que c'est assez restrictif si tu commence à vérifier et analyser le numéro.
Juste analyser à la rigueur que ce sont bien des chiffres mais c'est tout. Ceci n'engage que moi.

Et sinon d'un point de vu technique je ne sais pas comment faire ! :-)

#10
shagshag

    PrestaShop Apprentice

  • Freelance agréé
  • 304 posts
Bonjour,

C'est très compliqué de fixer une règle sur un numéro de téléphone.
Par exemple tous ces numéros sont valides:

0123456789
7123456789 (opérateur différent)
(0)123456789
01.23.45.56.78.89
01-23-45-67-89
0 123-456-789
+33 123456789
+33 (0) 123 456 789

plus toutes les combinaisons possibles. et là on ne parle que des numéros français
en espagne : 963 326 426 : 9 chiffres
en belgique : 02 420 90 62 : 9 mais pas groupés pareil
usa : 1-800-275-2273 ou 1-800-APPLE
...

bref pas possible de faire une règle. d'habitude je laisse ce champ libre

Edit : grillé :)
Saṃdhā : Tout Internet sans stress

#11
junnecito

    PrestaShop Fanatic

  • Moderators
  • 1193 posts
moi aussi je pense que ce trs complique.

#12
zaglet

    PrestaShop Newbie

  • Members
  • Pip
  • 3 posts
Tu peux peut être demander le pays puis grâce au javaScript tu sélectionnes les règles spécifiques au pays.
En plus comme ça tu aura du temps pour créer les règles pour chaque pays et puis celui dont tu ne connais pas les règles tu ne vérifies pas.
Si par exemple on choisis france comme pays tu vérifies bien sur et on pourra pas mettre n'importe quoi.

Voila.

#13
MakeOpen

    PrestaShop Apprentice

  • Members
  • PipPip
  • 88 posts
Salut à tous

Je détère le sujet !
J'ai le même besoin : rendre le champ phone_mobile obligatoire.

J'ai modifié la classe Address.php comme l'a préconisé Pierre-Yves, ainsi que les formulaires address.tpl & authentication.tpl.

Dans le cas où il s'agit d'une inscription, pas de problème, mais dans le cas où la fiche client a été créée AVANT la modification de la classe, ET dans le cas où cette fiche avait ce champ vide, Presta affiche une erreur "Hack Attemp' sur le lien 'mettre à jour mes adresse' de l'espace client.

Savez vous comment éviter ça ?

Merci

#14
junnecito

    PrestaShop Fanatic

  • Moderators
  • 1193 posts
J'ai une question tres bete :exclaim:
Pourquoi vous cherchez a rendre obligatoire un Nº de telephone :question:
encore, question bete de ma part.

#15
FranWeb

    PrestaShop Addict

  • Members
  • PipPipPip
  • 636 posts
Effectivement, un numéro de téléphone ne doit pas être obligatoire. La législation française est claire là-dessus (d'ailleurs, que devient ceux en liste rouge et consoeurs ? ).

#16
Patric Codron

    PrestaShop Superstar

  • PrestaTeam
  • 9152 posts

From 1224698634:

Effectivement, un numéro de téléphone ne doit pas être obligatoire. La législation française est claire là-dessus (d'ailleurs, que devient ceux en liste rouge et consoeurs ? ).


Intéressant...
Patric CodronCommunity Manager | Manager de CommunautéPrestaShop

Posted Image Merci de respecter les règles du forum PrestaShop.com :)
Posted Image Please comply with the PrestaShop.com forum rules :)

#17
FranWeb

    PrestaShop Addict

  • Members
  • PipPipPip
  • 636 posts
D'ailleurs, PrestaShop ne demande que ce que légalement le commerçant doit avoir/pouvoir réclamer comme info. Le numéro de téléphone est facultatif, ce n'est probablement pas pour rien. Si vous voulez connaître un numéro de téléphone fixe d'un de vos clients, recherchez sur les pages blanches ou jaunes

#18
MakeOpen

    PrestaShop Apprentice

  • Members
  • PipPip
  • 88 posts

From 1224695239:

J'ai une question tres bete :exclaim:
Pourquoi vous cherchez a rendre obligatoire un Nº de telephone :question:
encore, question bete de ma part.

Pour une raison toute bête :)
Je livre en main propre le soir même de la commande.
Un numéro de téléphone est apprécié lorsqu'il n'y a personne à l'adresse indiquée ;)

Ceci dit, cela n'empêche pas que Prestashop de dérailler sur les fiches créées avant la modification des champs obligatoires (telephones ou autres)

#19
FranWeb

    PrestaShop Addict

  • Members
  • PipPipPip
  • 636 posts
Donc dans ton cas, je mettrais un texte informatif du genre:
"Pour un traitement optimal de votre commande et pour un bon déroulement de sa livraison, veuillez renseigner votre numéro de téléphone."
De plus, les CGV inclueront un paragraphe propre sur cet élement important de la livraison qui te protège en cas de problème de toute nature rencontré lors de la livraison et pour tout litige pouvant résulter d'une mauvaise indication du numéro.

#20
MakeOpen

    PrestaShop Apprentice

  • Members
  • PipPip
  • 88 posts

From 1224713524:

Donc dans ton cas, je mettrais un texte informatif du genre:
"Pour un traitement optimal de votre commande et pour un bon déroulement de sa livraison, veuillez renseigner votre numéro de téléphone."
De plus, les CGV inclueront un paragraphe propre sur cet élement important de la livraison qui te protège en cas de problème de toute nature rencontré lors de la livraison et pour tout litige pouvant résulter d'une mauvaise indication du numéro.


Merci, mais je ne demande pas d'information de type juridique, mais technique sur le message 'Hack Tempt' de Prestashop ;)