laravel-admin多图⽚上传以及多数据存储问题
多图上传效果
多数据存储
先说多图上传实现
官⽅提供了多图上传组件
$form->multipleImage($column[,$label]);
//本例中字段是imgurl,所以添加如下代码
$form->multipleImage('imgurl',__('商品图⽚'));
⽂档⾥还说明了,只是添加⼀个multipleimage⽅法是不⾏的,还需要再对应的模板⾥定义存储格式,本例是Good模板中添加
publicfunctiontPicturesAttribute($pictures)
{
if(is_array($pictures)){
$this->attributes['pictures']=json_encode($pictures);
}
}
publicfunctiongetPicturesAttribute($pictures)
{
returnjson_decode($pictures,true);
}
注意,如果是添加上⾯的代码,是会报错的!⽂档中没有说明:⽅法名必须要与字段对应起来!
意思就是,这⾥的tPicturesAttribute()要修改成tImgurlAttribute(),⾥⾯的['pictures']也同步修改为['imgurl']
完成上述修改后,才能正常上传
同理,批量添加数据,也需要做类似处理
⾸先这⾥⽤到的是laravel-admin的FromJSON组件这⾥的字段名称是size在model⾥也要注意修改官⽅⽂档中默认的⽅法名
$form->table('size',function($table){
$table->text('sizes',__('规格⼤⼩'));
$table->text('colors',__('颜⾊分类'));
$table->text('sales',__('价格'));
});
官⽅默认是getColumnNameAttribute()这⾥需要修改为这⾥的getSizeAttribute()
publicfunctiongetSizeAttribute($value)
{
returnarray_values(json_decode($value,true)?:[]);
}
publicfunctiontSizeAttribute($value)
{
$this->attributes['size']=json_encode(array_values($value));
}
最后,在“显⽰”页⾯中还是会报错
官⽅⽂档⾥没有看到处理办法,这⾥就⾃⼰做了下处理,将数组拆分成字符串后显⽰,如下:
$show->field('size',__('Size'))->as(function(){
//如果size内容是数组则进⾏处理
if(is_array($this->size)){
$str='';
//遍历数组
foreach($this->sizeas$v){
//如果内部仍是数组(当前是⼆维数据),则拆分成字符串并追加到str中
if(is_array($v)){
$str.=implode('-',$v).',';
}el{//否则直接追加到str中
$str.=$v;
}
}
return$str;
}
});
本文发布于:2022-11-26 08:15:23,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/23905.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |