属性规格表(展示和添加) sku

博客内容涉及商品属性值的展示和添加功能。在展示页面,通过控制器方法查询并递归组合属性值,形成排列组合展示。在添加功能部分,接收表单数据并处理,准备入库操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 属性值的添加和展示

也就是货品列表

点击货品列表进入下图展示

 规格属性值的展示代码如下(展示页面)

<form enctype="multipart/form-data" action="{:url('goods/sku')}" method="post" name="theForm">
            <!-- 通用信息 -->
            <table width="90%" id="general-table" align="center" style="display: table;">
                <tbody>
                <tr>
                    <input type="hidden" name="goods_id" value="{$id}">
                    <td>规格组合</td>
                    <td>货号:</td>
                    <td>市场价:</td>
                    <td>本店价:</td>
                    <td>库存数量:</td>
                </tr>
                {volist name="arr" id="v"}
                <tr>
                    <td>{$v.name}</td>
                    <input type="hidden" name="group_id[]" value="{$v.ids}">
                    <input type="hidden" name="value_name[]" value="{$v.name}">
                    <td><input type="text" name="goods_number[]" value="{$v.number}"></td>
                    <td><input type="text" name="goods_price[]" value="1314"></td>
                    <td><input type="text" name="goods_self[]" value="520"></td>
                    <td><input type="text" name="goods_num[]" value="99"></td>
                </tr>
                {/volist}
                </tbody></table>
            <div class="button-div">
                <input type="submit" value=" 确定 " class="button">
                <input type="reset" value=" 重置 " class="button">
            </div>
        </form>

 控制器(展示的方法)

 

value表是属性值的表

 //属性值的列表
    public function attr_list()
    {
        //要查询的那一条的商品ID
        $id=input('get.id');
        $user=new Value();
        //查询属性值表 里面的商品id和传值接过来的值一样的id 的数据
        $res=$user::where('goods_id',$id)->select();
        //对规格值进行处理
        $result=[];
        foreach($res as $k=>$v){
            $result[$v['attr_id']][]=$v['value_id'];
            //属性id与对应的属性值
            $value[$v['value_id']]=$v['value_name'];
        }
        //print_r($result);die;

        //进行递归遍历
        $result=$this->digui($result);
       // print_r($result);die;
        //将排序好的值进行id与值的匹配
        $rs=[];
        foreach($result as $k=>$v){
            //取出id
            $arr['ids']=$v;
            $name=[];
            //将id拼接成数组
            $idarr=explode(',',$v);
            foreach($idarr as $kk => $vv){
                $name[]= $value[$vv];
            }
            $arr['name']=implode(',',$name);
            //货号
            $arr['number']=time()+$k;
            $rs[]=$arr;
        }
        return view('goods/attr_list',['arr'=>$rs,'id'=>$id]);
    }

    //递归
    private function digui($arr){
        if(count($arr)>=2){
            $a=array_shift($arr);
            $b=array_shift($arr);
            foreach($a as $k=>$v){
                foreach($b as $kk=>$vv){
                    $list[]=$v.','.$vv;
                }
            }
            if(!$arr){
                return $list;
            }
            array_unshift($arr,$list);
            $arr = $this->digui($arr);
        }
        return $arr;
    }

代码的思路:

结果商品的id 

print_r($result)的结果是:
5,6是属性值的属性(颜色,大小)  5,6里面的数组是该属性的属性值  
(9,10)黄色,红色       
(11,12)13寸,14寸

()

 print_r($value)的结果是:查询出该属性的属性值名称

 然后调用递归,将数组分组成(排列组合)打印的是递归返回的数据print_r($result)结果如下

将(9,10)和(11,12)进行排列组合,结果如下如所示

 在循环递归放回值$result,也就是上面的数组进行循环,在截取下逗号(变量为$idarrr),

再循环$idarr,进行循环赋值,循环完拼接成属性值的名称就是$arr[]'name=implode(',',$name)

得到属性值的名称,在随机一个货物的编号,然后返回渲染

 

属性值添加:点击确定实现添加功能代码如下(表单的展示还是上面HTML的代码)

 添加功能(方法)

  /**
     * 规格属性表的添加 (sku)
     */
    public function sku()
    {
        //接受数组
        $data=input('post.');
        //取出数组里对应的值
        //商品id
        $goods_id=$data['goods_id'];
        //规格名称
        $value_name=$data['value_name'];
        //货号
        $goods_number=$data['goods_number'];
        //市场价
        $goods_price=$data['goods_price'];
        //本店价
        $goods_self=$data['goods_self'];
        //库存
        $goods_num=$data['goods_num'];
        //规格id的组合
        $group_id=$data['group_id'];

        //定义一个空数组
        $list=[];
        foreach($value_name as $k=>$v){
            $list[$k]['goods_id']=$goods_id;
            $list[$k]['group_id']=$group_id[$k];
            $list[$k]['value_name']=$value_name[$k];
            $list[$k]['goods_number']=$goods_number[$k];
            $list[$k]['goods_self']=$goods_self[$k];
            $list[$k]['goods_num']=$goods_num[$k];
            $list[$k]['goods_price']=$goods_price[$k];
        }

        $user=new Sku();
        //商品已有的sku
        $user->where('goods_id',$goods_id)->delete();
        $res=$user->saveAll($list);
        if($res){
            $this->success('sku属性添加成功','goods/goods_list');
        }else{
            $this->error('sku属性添加失败');
        }
    }

要添加是有价格、库存等等。。。他们的键值都一样所以循环一样就行了

代码思路:接受所有的值  打印之后如下

 接受数组里的数据,进行循环处理成(方便入库,进行添加)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值