4 votes

Ajout au panier dans la classe de panier d'achat Codeigniter

Merci d'avoir pris le temps de lire ceci. J'ai utilisé la classe de panier d'achat de Code Igniter pour un panier de base, mais j'ai un petit problème. Après avoir ajouté un article au panier, je redirige l'utilisateur vers une page de paiement, mais lorsque je clique en arrière sur le navigateur, l'article est supprimé. Je le sais parce que j'ai <?php echo anchor('cart','<strong>'.$this->cart->total_items(). '</strong> item(s)') ?> dans l'en-tête, et il se décrémente lorsqu'on revient en arrière. C'est vraiment ennuyeux et j'aimerais y remédier.

c'est le contrôleur qui traite le formulaire

public function process () {
if($this->input->post('submit')) {
    $product = $this->products_model->getProductRow($this->input->post('productid'));

    $data = array(
    'id'      => $product['id'],
    'qty'     => 1,
    'price'   => $this->product_helper->calcPrice($product['id']),
    'name'    => $product['name']
    );

    $this->cart->insert($data);
    redirect('cart');
    //have tried using redirect('cart', 303); but doest do anything
    //have also tried flusing the buffer
}           
else
    redirect('seatcovers');}

Y a-t-il quelque chose de trivial que je manque ici, ou est-ce quelque chose qui doit être modifié dans la classe de panier de CI ?

Merci beaucoup.

1voto

stalin Points 414

Je sais que c'est un peu vieux mais j'ai eu le même problème, le problème est que la bibliothèque a une expression régulière pour limiter le nom de l'article.

class CI_Cart {

    // These are the regular expression rules that we use to validate the product ID and    product name
    var $product_id_rules   = '\.a-z0-9_-'; // alpha-numeric, dashes, underscores, or periods
    var $product_name_rules = '\.\:\-_ a-z0-9'; // alpha-numeric, dashes, underscores, colons or periods

changez cela ou créez votre propre bibliothèque de panier personnalisée

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class MY_Cart extends CI_Cart
{
    function __construct()
    {
        parent::__construct();
        $this->product_name_rules = '\d\D';
    }
}

J'ai trouvé la solution ici http://darrenonthe.net/2011/05/03/cant-add-products-to-codeigniter-shop-cart-class/ ?

0voto

Jason Lewis Points 8273

Important : La classe Panier utilise la classe Session de CodeIgniter pour enregistrer les informations du panier dans une base de données. Avant d'utiliser la classe Panier, vous devez donc configurer une table de base de données, comme indiqué dans la documentation sur les sessions, et définir les préférences de session dans votre fichier application/config/config.php pour utiliser une base de données.

Je suppose que vous l'avez fait aussi ? La seule suggestion que j'ai à faire est de supprimer cette redirection, d'essayer de naviguer vers une autre page, puis de revenir en arrière pour voir si le nombre correct est maintenu.

De plus, vous dites que vous utilisez le bouton retour du navigateur. Avez-vous essayé de rafraîchir la page pour voir si elle n'utilise pas une copie en cache du navigateur ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X