1.商品列表中点击加入购物车,则跳转到购物车列表,效果如图所示:

视图代码goods/list.php中。代码如下:

<?php echo Html::a('加入购物车',['cart','id'=>$info['goods_id']])?>

控制器GoodsController.php中,开启session.

  1. use yii\web\Session;
    $session = new Session;
    $session->open();
  1. /**
    * 加入购物车
    */
    public function actionCart($id){
    //获取添加到购物车的商品的信息
    $goods_model=new Goods();
    $good_info=$goods_model->findOne($id);
    //信息为空或者数量<0,则不存在要购买的商品,否则把要购买的商品添加到session中
    if(empty($good_info) || count($good_info)<0){
    exit("No Goods");
    }else{
    $good_info['num']=1;
    //判断购物车中是否已经存在该商品,存在的话数量叠加,
    if(isset($_SESSION["shoplist"][$good_info['goods_id']])){
    //若存在数量叠加
    $num=$_SESSION["shoplist"][$good_info['goods_id']]['num'];
    $num++;
    $_SESSION["shoplist"][$good_info['goods_id']]['num']=$num;
    //$_SESSION["shoplist"][$good_info['goods_id']]['num'] ++;
    }else{
    //若不存在,作为新购买的商品添加到购物车中
    $_SESSION["shoplist"][$good_info['goods_id']]=$good_info;
    }
    // $_SESSION['shoplist'][]=$good_info;
    return $this->redirect('./index.php?r=cart/list');
    }
    }

2.购物车列表页:

  1. use yii\web\Session;
  2.  
  3. $session = new Session;
    $session->open();
  1. /**
    * 购物车列表
    */
    public function actionList(){
    $cart_list=$_SESSION['shoplist'];
    return $this->render('list',['cart_list'=>$cart_list]);
    }

  1.  
  2. 3.删除购物车中的商品和清空购物车
  1. 视图cart/list.php
    <?php echo Html::a('删除',['delete','id'=>$info['goods_id']],['onclick'=> 'return confirm("Confirm to delete?")'])?>
  1. 控制器CartController.php
    /**
    * 购物车中的单一商品删除
    */
    public function actionDelete(){
    $cart_list=$_SESSION['shoplist'];
    //判断是删除一个商品还是请空购物车
    if($_GET['id']){
    //从session中删除指定的商品信息
    unset($_SESSION["shoplist"][$_GET['id']]);
    }else{
    //清空session中商品,清空购物车
    unset($_SESSION["shoplist"]);
    }
    return $this->redirect("./index.php?r=cart/list");
    }

yii2购物车实现的更多相关文章

  1. yii2 restful api——app接口编程实例

    <?php namespace common\components; use common\models\Cart; use common\models\User; use Yii; use y ...

  2. 如何一步一步用DDD设计一个电商网站(十)—— 一个完整的购物车

     阅读目录 前言 回顾 梳理 实现 结语 一.前言 之前的文章中已经涉及到了购买商品加入购物车,购物车内购物项的金额计算等功能.本篇准备把剩下的购物车的基本概念一次处理完. 二.回顾 在动手之前我对之 ...

  3. session实现购物车

    为实现简单的购物功能(购物车添加.账户查看.购物车商品删除.实时的购物商品数量及价格的计算显示.购物车商品数量可手动输入等),用session实现了一简单的以php语言为基础.连接MySQL数据库的购 ...

  4. 如何一步一步用DDD设计一个电商网站(六)—— 给购物车加点料,集成售价上下文

    阅读目录 前言 如何在一个项目中实现多个上下文的业务 售价上下文与购买上下文的集成 结语 一.前言 前几篇已经实现了一个最简单的购买过程,这次开始往这个过程中增加一些东西.比如促销.会员价等,在我们的 ...

  5. PHP之购物车的代码

    该文章记录了购物车的实现代码,仅供参考 book_sc_fns.php <?php include_once('output_fns.php'); include_once('book_fns. ...

  6. Yii2的深入学习--行为Behavior

    我们先来看下行为在 Yii2 中的使用,如下内容摘自 Yii2中文文档 行为是 [[yii\base\Behavior]] 或其子类的实例.行为,也称为 mixins,可以无须改变类继承关系即可增强一 ...

  7. 使用session页面控制登录入口及购物车效果的实现

          由于 Session 是以文本文件形式存储在服务器端的,所以不怕客户端修改 Session 内容.实际上在服务器端的 Session 文件,PHP 自动修改 Session 文件的权限,只 ...

  8. 网站实现微信登录之回调函数中登录逻辑的处理--基于yii2开发的描述

    上一篇文章网站实现微信登录之嵌入二维码中描述了如何在自己的登录页面内嵌入登录二维码,今天的这篇文章主要是描述下在扫码成功之后微信重定向回网站后登录逻辑的处理,其实也就是验证身份信息,授权用户登录的逻辑 ...

  9. 网站实现微信登录之嵌入二维码——基于yii2开发的描述

    之前写了一篇yii2获取登录前的页面url地址的文章,然后发现自己对于网站实现微信扫码登录功能的实现不是很熟悉,所以,我会写2-3篇的文章来描述下一个站点如何实现微信扫码登录的功能,来复习下微信扫码登 ...

随机推荐

  1. 1001 数组中和等于K的数对

    1001 数组中和等于K的数对 基准时间限制:1 秒 空间限制:131072 KB 给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K的数对.例如K = 8,数组A ...

  2. Selenium2学习-010-WebUI自动化实战实例-008-Selenium 操作下拉列表实例-Select

    此文主要讲述用 Java 编写 Selenium 自动化测试脚本编写过程中,对下拉列表框 Select 的操作. 下拉列表是 Web UI 自动化测试过程中使用率非常高的,通常有两种形式的下拉列表,一 ...

  3. mysql中varchar(50)最多能存多少个汉字

    首先要确定mysql版本4.0版本以下,varchar(50),指的是50字节,如果存放UTF8汉字时,只能存16个(每个汉字3字节) 5.0版本以上,varchar(50),指的是50字符,无论存放 ...

  4. How to delete expired archive log files using rman?

    he following commands will helpful to delete the expired archive log files using Oracle Recovery Man ...

  5. procps包里面的sysctl命令

    procps包里面的sysctl命令 --http://www.cnblogs.com/createyuan/p/3740917.html?utm_source=tuicool&utm_med ...

  6. 关于ios导航控制器的知识总结

    关于ios导航控制器的知识总结 添加了导航控制器后: 1.一个导航控制器会有一个顶部导航栏navigationbar和一个底部工具栏toolbar,它们是导航控制器navC的属性.且导航栏默认是不隐藏 ...

  7. Vue.2.0.5-单文件组件

    介绍 在很多Vue项目中,我们使用 Vue.component 来定义全局组件,紧接着用new Vue({ el: '#container '}) 在每个页面内指定一个容器元素. 这种方案在只是使用 ...

  8. jsp导出Excel功能的实现

    借助POI的excel接口,可以方便得实现excel导出功能: 首先需要引入poi对应的jar包 1.前端jsp页面需要一个a链接. web页面文件MIM类型的下载,只需要一个a元素,该a可以链到该文 ...

  9. 微信成为开发者C#代码

    第一句话都会这么去写:程序猿就是苦逼,除了开发还要会写博文!今天咱就和大家探讨下如何让自己成为开发者!那么怎么才能成为开发者呢? 首先给大家一个微信的截图,看到这个截图,是不是有想去尝试的冲动?

  10. linux 硬件信息

    1. 查看物理CPU的个数 #cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l 2. 查看逻辑CPU的个数 #cat / ...