Jump to content

Ajout d'un champ sur la page identité


Recommended Posts

Bonjour,

 

J'ai besoin de connaitre des détails supplémentaires concernant l'identité de mes clients: combien d'enfants ont ils et les prénoms, dates de naissance et sexe de ces enfants.

 

Pour cela, j'ai ajouté une table lk_child dans la base de données dont la structure est la suivante:

 

id_child : clé primaire

id_parent: = id_customer pour associer l'entrée au client concerné

gender

firstname

birthday

 

Après je sèche ... Quels fichiers modifier? J'ai bien modifé identity.tpl pour le moment, mais où et comment faire les insertions et appels à la base de données pour avoir les informations?

 

Dans l'idéal (mais j'en suis loin), l'utilisateur se verrait demander:

 

enceinte? oui / non

si oui, alors demande du prénom de l'enfant, de son sexe et de sa date de naissance prévue

 

enfants:

possibilité d'ajouter des enfants en cliquant sur un bouton ajout avec pour chacun d'eux le prénom, la date de naissance et le sexe.

 

 

Si cela est trop compliqué à mettre en place alors, une version simplifiée, 5 lignes enfant1, enfant2, ... enfant5 avec sur chaque ligne un champ prenom, date de naissance et sexe.

 

Voici mon site: http://www.lekoutchoulou.com

 

Merci beaucoup pour votre aide!!

Link to comment
Share on other sites

Pour ajouter un champs, il faut ajouter... une variable.

 

IL ne faut pas rajouter une table mais un champs dans une table. En l'occurrence ici il faudra rajouter un champs dans la table ps_customer. (bien sûr, il suffit de rajouter autant de champs qu'il y aura de champs dans le formulaire genre un champs prenom_enfant, un champs sexe_enfant et un champs date_naissance par exemple).

 

Ensuite, il va falloir travailler sur la classe customer. Cette classe est contenue dans le fichier classes/customer.php

Tu vois au début du fichier des déclarations de variable. Il va falloir déclarer tes variables:

public $prenom_enfant;
public $sexe_enfant;
public $date_naissance;

 

Ensuite, il va falloir insérer les variables dans le tableau $fieldsValidate. Dans le tableau:

$fieldsValidate = array('secure_key' => 'isMd5', 'lastname' => 'isName',...

Tu insères à la fin:

'prenom_enfant' => 'isCleanHtml','date_naissance' => 'isCleanHtml', 'sexe_enfant' => 'isCleanHtml'

 

Enfin dans ce même fichier, on va faire la relation avec la base dans la fonction getFields en rajoutant avant le return $fields:

$fields['prenom_enfant'] = pSQL($this->prenom_enfant);
$fields['date_naissance'] = pSQL($this->date_naissance);
$fields['sexe_enfant'] = pSQL($this->sexe_enfant);

 

Ensuite dans le fichier TPL, on va rajouter les champs input:

<input type="text" name="prenom_enfant" /><br />
<input type="text" name="sexe_enfant" /><br />
<input type="text" name="date_naissance" /><br />

 

Et voilà, quand tu valideras les champs, normalement les champs supplémentaires seront remplis également.

 

Il nous reste à afficher les informations supplémentaires dans la fiche client depuis le BO. Cela se passe dans le fichier AdminAdresses.php du répertoire admin/tabs/AdminAdresses.php

Là, par exemple après:

echo '
<label>'.$this->l('Other').'</label>
<div class="margin-form">
 <textarea name="other" cols="36" rows="4">'.htmlentities($this->getFieldValue($obj, 'other'), ENT_COMPAT, 'UTF-8').'</textarea>
 <span class="hint" name="help_box">'.$this->l('Forbidden characters:').' <>;=#{}<span class="hint-pointer"> </span></span>
</div>';

Tu ajoutes:

echo '
<label>'.$this->l('prénom enfant').'</label>
<div class="margin-form">
 <input type="text" size="33" name="phone_mobile" value="'.htmlentities($this->getFieldValue($obj, 'prenom_enfant'), ENT_COMPAT, 'UTF-8').'" />
</div>';
echo '
<label>'.$this->l('sexe enfant').'</label>
<div class="margin-form">
 <input type="text" size="33" name="phone_mobile" value="'.htmlentities($this->getFieldValue($obj, 'sexe_enfant'), ENT_COMPAT, 'UTF-8').'" />
</div>';
echo '
<label>'.$this->l('date naissance').'</label>
<div class="margin-form">
 <input type="text" size="33" name="phone_mobile" value="'.htmlentities($this->getFieldValue($obj, 'date_naissance'), ENT_COMPAT, 'UTF-8').'" />
</div>';

 

Voilà ça doit être tout bon. Je l'ai pas testé mais je pense pas avoir oublié quelque chose. Si ça marche pas, fais moi signe que je regarde si j'ai pas omis quelque chose.

Bien sûr, il faudrait l'améliorer pour inclure des champs différents (garçon/fille pour sexe, format date pour la naissance...)

 

Voilà, 30 minutes pil-poil pour l'écrire, alors j'espère que ça servira ;)

Edited by franckm1000 (see edit history)
  • Like 1
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...