THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


,Salut,

je fais un plugin qui associe des infos saisies par un client (nom, prénom, adresse, ...) à un produit du panier.

je suis parti de ça : http://sourceforge.net/p/pluginsthelia/ … .class.php (ps : j'ai fait une mise à jour pour ce plugin :http://thelia.net/contributions/plugins/produit-55/article/fichier-joint-a-un-article-v2  , mais ça n'apparait pas dans le svn)

je fais comme ça :

        $_SESSION['navig']->panier->tabarticle[$index]->perso[0]->declinaison = "9";
        $_SESSION['navig']->panier->tabarticle[$index]->perso[0]->valeur = "<br> Nom : ".$_POST["nom"];

        $_SESSION['navig']->panier->tabarticle[$index]->perso[1]->declinaison = "10";
        $_SESSION['navig']->panier->tabarticle[$index]->perso[1]->valeur = "<br> Raison : ".$_POST["raison"];

        $_SESSION['navig']->panier->tabarticle[$index]->perso[2]->declinaison = "11";
        $_SESSION['navig']->panier->tabarticle[$index]->perso[2]->valeur = "<br> Specialites : ".$_POST["specialites"];

le problème c'est que, du coup j'ai mes déclinaisons produits créées via le  backoffice  de thelia qui ne s'enregistre plus lors de l'ajout au panier (si je commente les deux dernières lignes ça passe !).

je m'y prends mal ?

Yann

Offline


Bon, je me répond à moi même, je vais passer toutes les informations dans $_SESSION['navig']->panier->tabarticle[$index]->perso[0]->declinaison = "9";

Une question cependant : à quoi c'est sensé servir panier->tabarticle[$index]->perso ?

Merci

Offline


Dans fonctions/action.php :

  // vérification si un produit avec la même déclinaison est déjà  présent
  foreach ($_REQUEST as $key => $valeur) {
    if(strstr($key, "declinaison")){
      $ps = new Perso();
      $ps->declinaison = substr($key, 11);
      $ps->valeur = stripslashes($valeur);
      $perso[] = $ps;
    }
  }

j'ai bien l'impression que mon $_SESSION['navig']->panier->tabarticle[$index]->perso[0] est écrasé.
en faisant

 $ps = new Perso();
      $ps->declinaison = 9;
      $ps->valeur = $_SESSION['thelia_mon_ajout_info_perso'];
      $perso[] = $ps;

après ce code ça m'enregistre bien mes infos dans mon panier, mais je préférai passer par un plugin, c'est possible ?

Last edited by yledoare (01-10-2013 21:51:02)

  • manu
  • faï tot petar miladiu

Offline


Bonjour,

via un plugin tu vas pouvoir intervenir sur l'ajout du panier via le point d'entrée "ajouterPanier". Donc ton plugin mettre la méthode ajouterPanier qui prend en paramètre l'indice de l'entrée dans le tableau tabarticle :

class monPlugin extends PluginsClassiques
{

//le code de ton plugin

   public function ajouterPanier($indice) 
   {

        //le code que tu veux concernant ton panier, sachant qu'ici tu peux bien sur accéder à la session
   }
}

http://doc.thelia.net/
http://thelia.net/modules
http://raynaud.io
PGP public Key : 0xC6E546A6

Offline


merci braz (en Breton dans le texte)

Effectivement, en passant par

 public function ajouterPanier($indice){
      $nextindexperso=sizeof($_SESSION['navig']->panier->tabarticle[$indice]->perso);
...
      $_SESSION['navig']->panier->tabarticle[$index]->perso[$nextindexperso]->declinaison = $declinaison_infos_cartevisite;
      $_SESSION['navig']->panier->tabarticle[$index]->perso[$nextindexperso]->valeur = $infocarte ."<br>";
...
}

on dirait bien que c'est OK !