5.elasticsearch接入

1. 多图上传与商品属性以及商品长标题

1.1 多图上传

在App/Admin/Controllers/ProductsController的form方法中添加:


/**
 * Make a form builder.
 *
 * @return Form
 */
protected function form()
{
   
  ...

  $form->hasMany('images','商品图片设置',function (Form\NestedForm $form){
   
    $form->multipleImage('image_url','商品详情图片')
         ->sortable()
         ->removable()
         ->required()
         ->options([
           'dropZoneEnabled' => true, // 该参数允许拖拽上传
           'browseOnZoneClick' => true, // 该参数允许点击上传
           'slugCallback' => false, // 该参数是重新选择后依旧保留之前的,并且不会重复显示
           'uploadUrl' => '#', // 异步上传
           'showUpload' => false, // 是否显示上传按钮
           'layoutTemplates' => ['actionUpload' => ''], // 该参数要与uploadUrl结合使用,目的 为了不是异步上传的,但是能删掉多张图片中的某一张
           'maxFileCount' => 5, // 该参数是最多只能选择多少张
       ]);
   });

  ...
}
?>

在ProductImage模型中需要对新增与查询的数据进行设置:


public function getImageUrlAttribute($value)
{
   
  return json_decode($value,true);
}

public function setImageUrlAttribute($image)
{
   
  if (is_array($image)) {
   
    $this->attributes['image_url'] = json_encode($image);
  }
}
?>

然后在laravel-admin中进行访问:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IEjPP5iM-1598578433972)(assets/markdown-img-paste-20200808214327240.png)]

注意此处因为laravel-admin组件存在bug,新增的数据只能获取到一张图片

1.2 商品属性

商品属性是一组结构化的数据,用键值对的方式将商品的一系列特征展示给用户,如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k9fVneLo-1598578433974)(assets/markdown-img-paste-2020080821494316.png)]

这样可以让用户更容易了解该商品的一些数据,同时也可以通过这些属性来搜索、筛选商品

商品属性表

字段名称 描述 类型
id 自增长 ID unsigned big int
product_id 商品 ID unsigned big int, null
name 属性名称 varchar
value 属性值 varchar
  1. 接下来我们创建商品属性的模型
php artisan make:model Models/ProductProperty

调整模型代码:



namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class ProductProperty extends Model
{
   
    protected $fillable = ['name', 'value'];
    // 没有 created_at 和 updated_at 字段
    public $timestamps = false;

    public function product()
    {
   
        return $this->belongsTo(Product::class);
    }
}
?>

以及在 Product 模型中加入关联关系:


public function properties()
{
   
    return $this->hasMany(ProductProperty::class);
}
?>
  1. 调整商品后台

接下来我们需要在商品的管理后台加上商品属性相关的表单,由于商品属性是一个不同类型商品都通用的参数,因此需要在 ProductsController 的form中添加:


public function form
{
   
  ...
    // 放在 SKU 下面
  

你可能感兴趣的:(lms-微信商城网站实战)