Jump to content

Ajout Sélecteur B2B/b2C Dans Le Formulaire D'inscription


Recommended Posts

Bonjour,

 

Voila je voudrai ajouté dans ma page d'inscription un select qui aura pour capacité de switcher entre un compte particulier et un compte entreprise.

 

Pour l'instant j'ai fait la partie facile, c'est à dire que mon select fait du .show() et .hide() sur les éléments voulu.

 

Mais maintenant il me faut faire la vérification des champs dans le traitement.

 

C'est pour le cas ou l'on est une entreprise il faut une validation du siret obligatoire.

 

Mais j'ai un peu cherché sans trouvé ou était implémenté la fonction pour l'enregistrement...

 

Alors j'aimerai bien avoir une doc ou tout autre élément pour me précisé dans quel fichier trouvé se que je cherche et au cas ou un nom de fonction.

 

Merci beaucoup d'avance et je mettrai comme d'hab à contribution tout le récapitulatif et un petit tuto une fois mon problème régler.

 

Cordialement,

Link to comment
Share on other sites

Donc j'ai réussi en parti et donc voila une ébauche de ce que j'ai fait.

 

Tout d'abord, afin d'avoir un formulaire comme vous le souhaité, je vous conseil de le faire vous même :) mais pour les fainéants voici un exemple tiré de mon /theme/mon_theme/authentification.tpl :

 

{* variable pour savoir si nous sommes dans une configuration B2B ou B2C *}
{assign var=modeCompany value=false}
{if isset($smarty.post.typeofcount) && $smarty.post.typeofcount=='society'}{assign var=modeCompany value=true}{/if}
<script type="text/javascript">
{literal}
 /* fonction pour afficher ou caché les éléments souhaité, dans mon cas il s'agis du fieldset de la partie infos société et du champ société dans l'adresse */
 function switchType(valeur)
 {
  if(valeur=='society'){
$('.field_company').show();
  }
  else
  {
$('.field_company').hide();
  }
 }
{/literal}
</script>
<p class="select required">
<span>{l s='You are'}</span>
<select id="typeofcount" name="typeofcount" onchange="switchType(this.value);">
 <option value="individual" {if isset($smarty.post.typeofcount) && $smarty.post.typeofcount=='individual'}selected="selected"{/if}>{l s='An individual'}</option>
 <option value="society" {if isset($smarty.post.typeofcount) && $smarty.post.typeofcount=='society'}selected="selected"{/if}>{l s='A society'}</option>
</select>
</p>

 

Et j'ai donc ajouté une class "field_company" aux éléments fieldset des infos companie (ctrl+f sur "{l s='Your company information'}" et c'est la ligne du dessus) et sur le champ Société dans la partie de l'enregistrement de l'adresse (ctrl+f sur " $field_name eq "company"}" et c'est la ligne du dessous).

 

Ensuite dans le fichier /override/controllers/front/AuthController.php vous allez créer un over-classage de la fonction qui permet la vérification des champs uniquement si le champ ajouté via le select est à la valeur souhaité.

 

class AuthController extends AuthControllerCore
{
protected function processSubmitAccount()
{
 if(isset($_POST['typeofcount']) && $_POST['typeofcount']=='society'){
  Customer::$definition['fields']['siret']['required']=true;
  Customer::$definition['fields']['ape']['required']=true;
  Customer::$definition['fields']['company']['required']=true;
  /* Le groupe 4 étant mon groupe de type société */
  Customer::$initGroupBox=4;
 }
 parent::processSubmitAccount();
}
}

 

Maintenant, le second problème pour ma part, c'est l'auto-assignation à un groupe dans la cas ou le SIRET est valide.

Je n'ai pas trouvé d'ajout a un groupe. pour le moment.

 

 

Merci d'avance et à bientôt.

Cordialement,

Edited by hiroshi (see edit history)
Link to comment
Share on other sites

Voici mon dernier élément, pour l'ajout à un groupe automatique j'ai over-classer la classe Customer dans le fichier /override/classes/Customer.php :

class Customer extends CustomerCore
{
public static $initGroupBox=-1;

public function updateGroup($list)
{
 $this->cleanGroups();
 if(isset(self::$initGroupBox) && self::$initGroupBox>=0)
 {
  $this->addGroups(array(self::$initGroupBox));
 }
 else
 {
  parent::updateGroup($list);
 }
}
}

 

J'espère vous avoir un peu aidé.

Cordialement.

Edited by hiroshi (see edit history)
Link to comment
Share on other sites

  • 10 months later...

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...