当前位置: 代码迷 >> 综合 >> 07thinkphp 第十三天 购物车1
  详细解决方案

07thinkphp 第十三天 购物车1

热度:94   发布时间:2023-10-10 23:32:12.0

 

<?phpnamespace app\home\controller;use think\Controller;
use think\Db;
use think\Request;class Goods extends Base
{public function lst(Request $request,int $cid){// dump($cid);// 根据cid查tb_spu表,cid3字段 = $cid// 需要执行的sql语句如下#  select * from tb_spu as p join tb_sku as k on p.id = k.spu_id limit 10;$spus = Db::table('tb_spu')->alias('p')->where('cid3',$cid)->join('tb_sku k','p.id = k.spu_id')->paginate(10); //返回一个对象类型// $page = $spus->render();#将一个tp查询结果集collection对象转换为数组// dump($spus->toArray());return view('lst',['spus'=>$spus]);}public function  detail(Request $request,$id){#根据 id查 sku 表$sku = Db::table('tb_sku')->find($id);// dump($sku);exit;$spu = Db::table('tb_spu')->find($sku['spu_id']);$spu_detail = Db::table('tb_spu_detail')->where('spu_id',$sku['spu_id'])->find();// dump($spu_detail);die;$own_spec = json_decode($sku['own_spec'],true); //'{"机身颜色":"灰","内存":"4GB","机身存储":"32GB"}'// dump($own_spec);exit();$data = ['sku'=>$sku,'spu_detail' =>$spu_detail,'spu'=>$spu,'own_spec'=>$own_spec];#渲染模板return view('detail',$data);}
}

因为是tp所以先渲染数据, id这些就会有值, 然后vue中就会有数据

 

购物车① 未完成
原理保存到Localstorge1、如果购物车中有数据我们要还原购物车的数据,先定义一个空数组,然后 把老数据 写入,再push传入新数据2、判断商品是否重复 , 重复就number计数增加先定义一个布尔值的数据,然后我们循环储存的老数据,匹配vue中的数据,如果有id相等的话,我们就计数增加,然后跳出循环,如果不重复,就push提交一个新的数据
3、重新设置Localstorge数据
localStorage.setItem('skus',JSON.stringify(skus));
<script>const vm = new Vue({el:'#app',data:{sku:{//因为tp先解析 所以有解析数据id:'{$sku.id}',//商品的idimages:'{$sku.images}',//商品的图片title:'{$sku.title}',//商品的标题own_spec:JSON.parse('{$sku.own_spec|raw}'),//特有属性price:'{$sku.price}',//商品的价格number:1,//商品的数量selected:false,//商品的选中状态}},methods:{plus(){this.sku.number++;},mins(){if(this.sku.number>1){this.sku.number--;}},add(){//定义一个空数组 用作保存购物车的数据var skus = [];//1.还原购物车的数据if(localStorage.getItem('skus') != null){skus = JSON.parse(localStorage.getItem('skus'));}// console.log(skus);// 3.如果新添加的id商品已经存在原有的购物车中 就number +1 合并数据var flag = false;for(let i=0;i<skus.length;i++){if(skus[i].id==this.sku.id){//将number相加skus[i].number = skus[i].number + this.sku.number;//修改flag位trueflag = true;//break 跳出循环break;}}if(flag == false){//2.添加数据skus.push(this.sku);}//保存localStorage.setItem('skus',JSON.stringify(skus));},}});
</script>