Codeigniter购物车无法添加商品

时间:2015-01-29 13:04:49

标签: php html5 codeigniter shopping-cart

所以我正在尝试使用购物车创建应用程序,当我尝试添加该项目时,它无法正常工作。顺便说一句,我已经有一个工作车应用程序,这就是为什么我想知道为什么它不工作。我几乎从工作中复制了所有东西。这是代码

购物车控制器

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Cart extends CI_Controller {

public function __construct()
{
    parent::__construct();
    $this->load->library('cart');
}

public function add_to_cart(){

    $id = $this->uri->segment(3);
    if($this->cart->contents()){
        foreach ($this->cart->contents() as $item){
            if ($item['id']==$id){
                $data = array('rowid'=>$item['rowid'],
                    'qty'=>++$item['qty']);
                $process = $this->cart->update($data);
            }
            else{
                $data = array(
                    'id'=>$id,
                    'qty'=>1,                       
                    'name' => $this->get_data->get_value('product_name','products','product_id', $id),
                    'price' => $this->get_data->get_value('product_price','products','product_id', $id)
                    );
                $process = $this->cart->insert($data);
            }
        }
    }
    else{
        $data = array('id'=>$id,
                    'qty' =>1,
                    'name' => $this->get_data->get_value('product_name','products','product_id', $id),
                    'price' => $this->get_data->get_value('product_price','products','product_id', $id),
                    );
                    $process = $this->cart->insert($data);
    }


    if($process){
        $this->session->set_flashdata('success', 'Successful');
        redirect('products');
    }
    else{
        $this->session->set_flashdata('failed', 'Failed');
        redirect('products');
        //var_dump($process);
    }
}

这是按钮

<div class="button pull-right" style="margin-top: 10px;"><a href="<?php echo base_url().'cart/add_to_cart/'.$row->product_id;?>"><span class="glyphicon glyphicon-shopping-cart"></span>Add to Cart</a></div>

我真的看不出问题,我正在使用会话数据库,sess_us_database已经是TRUE。我尝试使用var_dump($process)并且它是假的,我尝试var_dump($data)并且数据看起来很好但是插入部分不起作用。伙计们好吗?对我来说这将是一个很大的帮助,谢谢。

4 个答案:

答案 0 :(得分:8)

CI默认购物车仅允许产品名称中的alpha-numeric, dashes, underscores, colons or periods,如果产品价格为0,则它也不会将产品添加到购物车。

请先检查一下。

答案 1 :(得分:0)

更改此变量的一个好方法是使用以下代码将MY_Cart.php放在application \ libraries \ MY_Cart.php上:

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class MY_Cart extends CI_Cart {

    var $product_name_rules = '[:print:]';

}

答案 2 :(得分:0)

检查是否忘记了以下内容:

// $ items数组是否包含id,数量,价格和名称?这些是必需的

1-价格必须为数字且大于0。 2-名称必须在alpha上 3-数量为数字且大于0。 4-必须设置ID

,如果您需要添加任何名称,则可以删除以下代码:

PARTY1,00000003,01546,0020,PARTY2,00000001,02315,0022,PARTY3,00000000,00000,0006,
  

来自system / libraries / Cart.php:第227行

答案 3 :(得分:-1)

将产品添加到购物车中时,请替换产品名称中的特殊字符。

示例:EKEN H9R / H9运动相机超高清4K / 25fps WiFi 2.0“ 170D水下防水头盔视频录制

// Trim special character from text
    public function trim_special_char($text)
    {
        $str = str_replace("(", '_:', $text);
        $str = str_replace(")", ':_', $str);
        $str = str_replace("/", '_slash', $str);
        $str = str_replace("+", '_plus', $str);
        $str = str_replace("&", '_and', $str);
        $str = str_replace("'", '_ss', $str);
        $str = str_replace("x", '_X', $str);
        $str = str_replace('"', '_cot', $str);

        return $str;
    }

    // Set special character from previous text
    public function set_special_char($text)
    {
        $str = str_replace('_:',  "(", $text);
        $str = str_replace(':_', ")", $str);
        $str = str_replace('_slash', "/", $str);
        $str = str_replace('_plus', "+", $str);
        $str = str_replace('_and', "&", $str);
        $str = str_replace('_ss', "'", $str);
        $str = str_replace('_X', "x", $str);
        $str = str_replace('_cot', '"', $str);

        return $str;
    }