fastadmin多图上传并每个图片要添加一个描述 麻烦讲得细致一点
时间: 2024-02-18 16:02:18 浏览: 25
好的,以下是更详细的步骤:
1. 在需要添加多图上传的表单页面中,添加一个文本框用于输入每个图片的描述信息。
例如,在编辑页面中添加一个文本框:
```html
<div class="form-group">
<label class="col-sm-2 control-label">图片描述</label>
<div class="col-sm-8">
<input type="text" class="form-control" name="desc[]" placeholder="请输入图片描述" value="<?php echo htmlentities($vo['desc']); ?>">
</div>
</div>
```
注意,name属性值为`desc[]`,这是因为一个表单中可能会上传多张图片,因此需要将上传的每个图片的描述信息都作为一个数组进行传递。
2. 在控制器中,将文本框的name属性值作为webuploader的描述字段传递给视图页面。
例如,在控制器中,将`desc[]`作为webuploader的描述字段传递给视图页面:
```php
// 图片上传
$this->assign('upload', [
'url' => url('upload/image'),
'name' => 'file',
'data' => [
'thumb' => 1,
'water' => 1,
'desc' => 'desc[]' // 添加图片描述
]
]);
```
3. 在webuploader的上传控件中,添加描述字段,并将描述字段作为参数传递给后台。
例如,在webuploader的上传控件中,添加描述字段:
```javascript
uploader = WebUploader.create({
...
formData: {
...
desc: desc // 描述字段
}
});
```
其中,`desc`为前面在控制器中传递的`desc[]`数组。
4. 在后台处理上传的图片时,可以通过获取上传控件传递的描述字段,将描述信息存储到数据库中。
例如,在处理上传图片的控制器方法中,获取描述字段:
```php
$desc = $this->request->post('desc/a', []);
```
然后,将描述信息与上传的图片一起存储到数据库中。
```php
// 存储上传的图片
foreach ($info as $file) {
$data = [
'url' => $file->url,
'desc' => isset($desc[$key]) ? $desc[$key] : '' // 获取当前图片的描述信息
];
$key = $file->key;
$result = $model->insertGetId($data);
$insertIds[] = $result;
}
```
这样,就实现了每个上传的图片要添加一个描述的需求。