ecshop加入购物车流程

来源:互联网 发布:国防科大 知乎 编辑:程序博客网 时间:2024/06/11 20:21

第一步:商品详细页点击“加入购物车”触发addtoCart()事件;

    Addtocart()js/common.js中定义。这个方法首先判断该商品是不是有规格属性,如果有规格属性则把参数quick的值设为1,否则设为0。这个函数最后通过ajax把相关参数通过post的方式传到flow.php?step=add_to_cart这个页面处理。

 

第二步:找到flow.php文件,执行$_REQUEST[step]==add_to_cart对应的代码;

    if (!empty($_REQUEST['goods_id']) && empty($_POST['goods']))

    {

        if (!is_numeric($_REQUEST['goods_id']) || intval($_REQUEST['goods_id']) <= 0)

        {

            ecs_header("Location:./\n");

        }

        $goods_id = intval($_REQUEST['goods_id']);

        exit;

    }

上面这段代码作用是判断商品id是否合法,然后继续看如下代码

    /* 检查:如果商品有规格,而post的数据没有规格,把商品的规格属性通过JSON传到前台 */

    if (empty($goods->spec) AND empty($goods->quick))

    {

    }

源代码中的上面这个判断的作用在一个情况中用到:如下图:


点击购买的时候,因为手机是有规格属性的,所以我们点击购买的时候,并没有选择属性,这时候上面这个判断就会返回商品的属性,然后经过
js处理之后显示下图所示的商品规格选择界面。 


然后继续, 下面这两个判断在源代码中都有注释了,可以看明白

  /* 更新:如果是一步购物,先清空购物车 */

 if ($_CFG['one_step_buy'] == '1')

  {

     clear_cart();

  }

  /* 检查:商品数量是否合法 */

  if (!is_numeric($goods->number) || intval($goods->number) <= 0)

  {

       $result['error']   = 1;

       $result['message'] = $_LANG['invalid_number'];

  }

 

最后是更新购物车,用到的函数是addto_cart(),这个函数在includes/lib_order.php中定义了,更新成功或者失败,以json格式返回相关信息。

 

0 0
原创粉丝点击