laravel-admin 多图片上传 以及多数据存储问题

多图上传效果

 

多数据存储

 

先说多图上传实现

官方提供了多图上传组件 

$form->multipleImage($column[, $label]);

// 本例中字段是imgurl,所以添加如下代码
$form->multipleImage('imgurl', __('商品图片'));

文档里还说明了,只是添加一个multipleimage方法是不行的,还需要再对应的模板里定义存储格式,本例是Good模板中添加

public function setPicturesAttribute($pictures)
{
    if (is_array($pictures)) {
        $this->attributes['pictures'] = json_encode($pictures);
    }
}

public function getPicturesAttribute($pictures)
{
    return json_decode($pictures, true);
}

注意,如果是添加上面的代码,是会报错的! 文档中没有说明:方法名必须要与字段对应起来!

意思就是,这里的setPicturesAttribute()   要修改成 setImgurlAttribute() ,里面的['pictures'] 也同步修改为['imgurl']

完成上述修改后,才能正常上传

 

同理,批量添加数据,也需要做类似处理

首先这里用到的是laravel-admin的 From JSON组件  这里的字段名称是size 在model里也要注意修改官方文档中默认的方法名

$form->table('size', function ($table) {
                $table->text('sizes', __('规格大小'));
                $table->text('colors', __('颜色分类'));
                $table->text('sales', __('价格'));
            });

官方默认是 getColumnNameAttribute()  这里需要修改为这里的 getSizeAttribute() 

    public function getSizeAttribute($value)
    {
        return array_values(json_decode($value, true) ?: []);
    }

    public function setSizeAttribute($value)
    {
        $this->attributes['size'] = json_encode(array_values($value));
    }

 

最后,在 “显示” 页面中还是会报错 

官方文档里没有看到处理办法,这里就自己做了下处理,将数组拆分成字符串后显示,如下:

$show->field('size', __('Size'))->as(function (){
    // 如果size内容是数组则进行处理
            if (is_array($this->size)){
                $str = '';
                // 遍历数组
                foreach($this->size as $v){
                    // 如果内部仍是数组(当前是二维数据),则拆分成字符串并追加到str中
                    if (is_array($v)){
                        $str.= implode('-',$v).',';
                    }else{ // 否则直接追加到str中
                        $str.=$v;
                    }
                }
                return $str;
            }
        });

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值