# MultiImages
**Repository Path**: u123/MultiImages
## Basic Information
- **Project Name**: MultiImages
- **Description**: 一个ThinkPHP3.2.3的插件,功能是增加一个存储多图ID的字段,同时相应的增加多图上传功能的表单。
- **Primary Language**: PHP
- **License**: GPL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2017-01-01
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
**Onethink多图字段插件 By Creatint** v0.4
**描述** :这是一个Onethink1.1的插件,它的功能是增加一个“多图字段”(增加在编辑模型时需要选择的字段列表中),并相应的在后台中增加多图上传表单。
**更新内容** : 修复了删除图片发生的bug
**安装步骤** :
先参照[TP、OT修改过滤器钩子](https://git.oschina.net/yotaku/Page/wikis/ThinkPHP%E3%80%81Onethink%E9%92%A9%E5%AD%90%E4%BF%AE%E6%94%B9%E4%B8%BA%E8%BF%87%E6%BB%A4%E5%99%A8%E9%92%A9%E5%AD%90)修改TP与OT的钩子为过滤器钩子。
3. 把MultiImages文件夹放在Addons中
4. “钩子管理”中增加钩子,如下图所示:


5. 安装插件,在设置中设置字段类型名称(此名称用做编辑模型时字段类型的名称,即模板中判断字段选取表单代码时所需的名称)

6. 增加挂载点:
'addFieldType'钩子放在Onethink/Application/Common/Common/function.php的get_attribute_type()函数的return语句之前:
```
// 获取属性类型信息
function get_attribute_type($type=''){
// TODO 可以加入系统配置
static $_type = array(
'num' => array('数字','int(10) UNSIGNED NOT NULL'),
'string' => array('字符串','varchar(255) NOT NULL'),
'textarea' => array('文本框','text NOT NULL'),
'date' => array('日期','int(10) NOT NULL'),
'datetime' => array('时间','int(10) NOT NULL'),
'bool' => array('布尔','tinyint(2) NOT NULL'),
'select' => array('枚举','char(50) NOT NULL'),
'radio' => array('单选','char(10) NOT NULL'),
'checkbox' => array('多选','varchar(100) NOT NULL'),
'editor' => array('编辑器','text NOT NULL'),
'picture' => array('上传图片','int(10) UNSIGNED NOT NULL'),
'file' => array('上传附件','int(10) UNSIGNED NOT NULL'),
);
$_type = hook('addFieldType',$_type,$filter=true);
return $type?$_type[$type][0]:$_type;
}
```
'multiImagesForm'钩子放在Onethink/Application/Admin/View/Article/edit.html的switch结构中(其中case的值‘multi_images’是上面设置的字段类型的名称):
```
{:hook('addForm',array('typeName'=>'multi_images','fieldName'=>$field['name'],'images_ids'=>$data[$field['name']]))}
```
**效果图:**


我的博客:[Creatint的博客](http://creatint.yotaku.cn)
推荐微信公众号:Fuchsia社区

致谢:
本插件借鉴了TP社区Clavis网友的“ONETHINK图片批量上传插件”的代码,感谢Clavis的无私奉献。
历史版本:
v0.4 2016.10.14
v0.3
v0.2 2016.9.19
v0.1 2016.9.19
> 后记
首先, 非常感谢你的分享. 已安装成功.
下面说说个人安装过程.
1, 我是个菜鸟,
你的第二步图片中显示"钩子挂载的插件排序"里有MultiImages,
新手在这里一脸懵逼, 我的没有显示MultiImages啊.
确定保存, 再点编辑, 依然没有. 好吧, 略过.继续第三步.
在第三步, 情况依然是这样. 再略过.
2, 在第四步,
把
```
$_type = hook('addFieldType',$_type,$filter=true);
```
这代码放在 **function.php** 的 **get_attribute_type** 方法里, **return** 语句的前面.
然后在后台新增模型字段时, "字段类型"里整个选项列表都没有了~
估计是因为
```
$_type = hook('addFieldType',$_type,$filter=true);
```
这句代码, get_attribute_type()方法出错了. 无法执行下面的返回列表.
好坑啊.
我只好注释掉
```
$_type = hook('addFieldType',$_type,$filter=true);
```
直接在get_attribute_type()的数组里添加一行:
```
'multi_images' => array('多图上传','varchar(255) NOT NULL'),
```
再到后台新增模型字段, "字段类型"里整个选项列表恢复正常, 并且多出了一个"多图上传"选项. OK.
3, 依你第四步所说, 在Onethink/Application/Admin/View/Article/edit.html页面添加
```
{:hook('addForm',array('typeName'=>'multi_images','fieldName'=>$field['name'],'images_ids'=>$data[$field['name']]))}
```
完成后, 去新增文章, 多图上传的输入位置处显示出来的是一个text类型的Input
~再一次捂脸.
于是, 我只好找到Onethink/Application/Admin/View/Article/add.html, 在里面也添加
```
{:hook('addForm',array('typeName'=>'multi_images','fieldName'=>$field['name'],'images_ids'=>$data[$field['name']]))}
```
完成, OK.
4, 安装插件之后, 后台扩展-已装插件后台, 多出了一个"多图字段扩展", 点击, 直接报错:
```
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'xiaozimu.zi_example' doesn't exist
```
不过这个无伤大雅, 我不理会它.