Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 15-04-2008 14:54:13

yosra
Membre
Date d'inscription: 03-03-2008
Messages: 83

[resolue][zend_session]utiliser les paniers

bonjour ,

je suis débutante et je veux utiliser un panier pour stocker les article choisie pour les afficher après .

mais le panier utilise les session donc j'ai commencer à voir les session avec zend

dans mon fichier index bootsrtap j'ai creer une session

Code:

Zend_Session::start();

est il suffisant pour enregistrer le panier une fois s'il est creer dans ma session?? et comment je peux l'enregister dans ma session
merci de m'aider

Dernière modification par yosra (17-04-2008 15:39:03)

Hors ligne

 

#2 15-04-2008 15:08:27

stf
Membre
Date d'inscription: 03-04-2008
Messages: 156

Re: [resolue][zend_session]utiliser les paniers

l'inconvénient avec les paniers dans des sessions, c'est que si la session arrive a expiration, ou si la personne ferme son navigateur(ou autre) ton panier est perdu.

La meilleure solution pour faire des paniers, et soit de stocker le panier de ton client en BDD, soit de le stocker dans des cookies(là il peut aussi le supprimer, mais apres tout se sera sa faute cette fois tongue )


sinon pour enregistrer une variable dans la session, c'est :

Code:

<?php
Zend_Session::set('monPanier',$panier);
?>

La bible ici sinon

Dernière modification par stf (15-04-2008 15:13:38)

Hors ligne

 

#3 15-04-2008 15:15:05

yosra
Membre
Date d'inscription: 03-03-2008
Messages: 83

Re: [resolue][zend_session]utiliser les paniers

merci pour la réponse
je veux utiliser les panier juste pour afficher la liste des articles voulue par l'utilisateur est il possible de ne pas utiliser la session ?? s'il vous plais aidez moi je suis perdue dans cette opération sadsad .

Hors ligne

 

#4 15-04-2008 16:08:17

stf
Membre
Date d'inscription: 03-04-2008
Messages: 156

Re: [resolue][zend_session]utiliser les paniers

La meilleure solution pour faire des paniers, est soit de stocker le panier de ton client en BDD, soit de le stocker dans des cookies(là il peut aussi le supprimer, mais apres tout se sera sa faute cette fois tongue )

Tu as ta réponse smile

Hors ligne

 

#5 16-04-2008 09:32:40

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [resolue][zend_session]utiliser les paniers

Si tu veux pas te prendre la tête (ce qui à l'air d'être le cas smile ) tu peux faire un simple tableau que tu stock...

Code:

//Bootstrap
require_once 'Zend/Session.php';
Zend_Session::start();
require_once 'Zend/Session/Namespace.php';
$cart = Zend_Session_Namespace('cart');
//Test panier
if (isset($cart->products) && is_array($cart->products)) {
    //nouveau
    $cart->products = array();
}
require_once 'Zend/Registry.php';
Zend_Registry::set('cart',new );
....
//Action de gestion du panier (ajout)
if ($this->_hasParam('idTruc')) {
    $cart = Zend_Registry::get('cart');
    $cart->products[$this->_getParam('idTruc')] = $this->_getParam('quantiteTruc',1);
    //Enregistrement auto :D
}
...
//Action d'affichage
        $cart = Zend_Registry::get('cart');
        $prods = array();
    foreach($cart->products as $idItem=>$Qte) {
        try {
            $prods[] = $this->model->Trucs->find($idItem)->current();
            
        } catch (Exception $e) { /*Le truc existe pas donc rien a faire */}
    }
    $this->view->prods = $prods;
...

Voilà j'espère que ce snipet vous aidera wink

Hors ligne

 

#6 16-04-2008 21:55:07

yosra
Membre
Date d'inscription: 03-03-2008
Messages: 83

Re: [resolue][zend_session]utiliser les paniers

merci pour le code Mr.MoOx c'est tres utile pour moi smilesmile j'ai ajouter les ligne

Code:

Zend_Session::start();
//Test panier
try {
    //existe deja
    $panier = Zend_Session::get('cart');
} catch (Exception $e) {
    //nouveau
    Zend_Session::set('cart',array());
}

mais s'il vous plais il y a cette erreur qui s'affiche
Fatal error: Call to undefined method Zend_Session::get() in D:\wamp\www\consultation2\applicationcss\index.php on line 40
j'ai fais le load de la classe session

Code:

Zend_Loader::loadClass('Zend_Session');

si j'ai compris la méthode get n'existe pas dans la classe session de zend ou quoi??

merci pour l'aide

Dernière modification par yosra (16-04-2008 22:14:52)

Hors ligne

 

#7 16-04-2008 23:05:17

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [resolue][zend_session]utiliser les paniers

Hu j'étais fatigué j'ai codé ça n'importe comment...
J'ai mis le code à jour wink
Du coup y'a la session, un namespace 'cart' et sa clé products qui est un tableau (idProduit=>quantité), et pour se trimballer ça partout dans l'appli, on met ça dans le registry!

Hors ligne

 

#8 17-04-2008 00:20:07

yosra
Membre
Date d'inscription: 03-03-2008
Messages: 83

Re: [resolue][zend_session]utiliser les paniers

merci pour l'explication c gentil de ta part ton code m'aidera bcp

merci encore je travaille maintenant pour appliquer ce code

smile

Hors ligne

 

#9 17-04-2008 13:35:27

yosra
Membre
Date d'inscription: 03-03-2008
Messages: 83

Re: [resolue][zend_session]utiliser les paniers

bonjour , tout le monde

d'abord je veux remercier fortement ceux qui m'ont aidé j'ai réussit à faire ce que je veux
voici le code

dans le bootstrap j'ai pas besion de déclrer Zend_Session::start(); car j'utilise Zend_auth

se qui concerne le panier j'ai utiliser Zend_Session_Namespace pour enregistrer mon panier une fois creer

dans la classe panier

pour creer le panier

Code:

public function creerlistearticle()
    {
     $cart = new Zend_Session_Namespace('cart');
     $ispanier=false;
     if (isset($cart->article) ) {
      $ispanier=true;
      }
      else
      {
       
       $this->panier=array();
       $this->panier['article']=array();
       $this->panier['description']=array();
       $this->panier['qte']=array();
       $cart->article=$this->panier['article'];
       $cart->description=$this->panier['description'];
       $cart->qte=$this->panier['qte'];
       Zend_Registry::set('cart',$cart );
       $ispanier=true;
      }
      return $ispanier;
}

pour ajouter dans le panier

Code:

public function ajouterarticle(&$article,&$qte,&$description)

{

 $cart = new Zend_Session_Namespace('cart');
if( $this->creerlistearticle()) 
{

array_push($cart->article,$article);
array_push($cart->description,$description);
array_push($cart->qte,$qte);

}
}

pour recuperer le nombres des enregistrement dans le panier

Code:

public function nbrenregistrement()

{
$nbr=0;
$cart = new Zend_Session_Namespace('cart');
if( $this->creerlistearticle())
$nbr=count($cart->article);
echo $nbr;
return($nbr);
}

dans mon controller

Code:

$categ = trim($this->_request->getParam('categ_select',''));
        
        $descrip=$_GET['description'];
                
        $qte=$_GET['qte'];
        
      
        
    
        $listearticles->ajouterarticle(&$categ,&$qte,&$descrip);//ajout
        
        $this->view->data=$listearticles->showCart();//retourner le panier
        
        $this->view->nbr=$listearticles->nbrenregistrement();//le nbr d'enregistrement

enfin j'ai ajouter dans le AuthController dans l'action logout

Code:

Zend_Auth::getInstance()->clearIdentity();
        Zend_Session::destroy();//pour détruire la session pour que le panier soit vide à la prochaine ouverture
        $this->_redirect('/');

dans l'affichage view

Code:

if (!isset($this->nbr)|| ($this->nbr<= 0))
{
   echo "<tr><td>Votre panier est vide </ td></tr>";
   }
  else
  {
   for ($i=0 ;$i < $this->nbr ; $i++)
   {
    echo "<tr>";
    echo"<td>.<input type=\"text\" size=\"4\" name=\"i[]\" value=\"".htmlspecialchars($i+1)."\"/>.</ td>";
    echo "<td>.<input type=\"text\" size=\"25\" name=\"article[]\" value=\"".htmlspecialchars($this->data->article[$i])."\"/>.</ td>";
    echo "<td>.<input type=\"text\" size=\"25\" name=\"description[]\" value=\"".htmlspecialchars($this->data->description[$i])."\"/>.</ td>";
    echo "<td>.<input type=\"text\" size=\"10\" name=\"qte[]\" value=\"".htmlspecialchars($this->data->qte[$i])."\"/>.</ td>";

}
}

?>

enfin big merci à tous c'est grace à vous que j'ai pu faire ça mais une petite derniére question  (j'espère wink) à l'ouverture de la liste d'ajout au panier je trouve qu'elle m'affiche un enregistrement initial vide?? pourquoi??
merci de m'aider

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages