很多情况下,我们把页面表单中input的name设置为和数据表中字段名一样,方便获取和对数据库进行操作。但是这样存在一些安全隐患,为了避免字段名暴露,我们可以使用模型中的字段映射功能。
定义格式:
~~~
// 字段映射
protected $fieldsMap = array (
// '表单字段'=>'数据库字段'
);
~~~
## 映射方法
### fromForm自动映射
调用fromForm时,如果所有验证都成功,最后将会自动根据上面的定义进行映射。
### 手动执行映射
当然有时候也可以手动映射,手动把数据都set到模型中,最后执行一下映射即可。
格式:
~~~
parseFieldsMap([数据],[类型])
~~~
返回值是转换后的数据。
> 注意:转换后不会自动保存到模型中,如有需要请手动赋值:
~~~
$model->set($model->parseFieldsMap($data));
~~~
| 名称 | 描述 |
| -- | -- |
| 数据 | 要被映射数据,留空则为模型中存储的数据 |
| 类型 | 转换类型。可选值请看下表。默认为Model::TO_DB |
类型:
| 类型名 | 描述 |
| -- | -- |
| Model::TO_DB | 表单字段转数据库字段 |
| Model::TO_FORM | 数据库字段转表单字段 |
## 例子
映射定义:
~~~
protected $fieldsMap=array(
'xingming' => 'name',
'nianling' => 'age'
);
~~~
### formForm用法
获取规则定义:
~~~
protected $rules=array(
'reg'=>array(
// 都不验证直接获取
array('name'=>'xingming'),
array('name'=>'nianling'),
)
);
~~~
获取数据:
~~~
$model->fromForm('reg');
~~~
模型中数据:
~~~
array(
'name' => '宇润',
'age' => 5
)
~~~
### 手动映射用法
#### 转为数据库字段
~~~
$data1 = array(
'xingming' => '宇润',
'nianling' => '5'
);
var_dump($model->parseFieldsMap($data1,Model::TO_DB));
~~~
输出:
~~~
array (size=2)
'name' => string '宇润' (length=6)
'age' => string '5' (length=1)
~~~
#### 转为表单字段
~~~
$data2 = array(
'name' => '宇润',
'age' => '5'
);
var_dump($model->parseFieldsMap($data2,Model::TO_FORM));
~~~
输出:
~~~
array (size=2)
'xingming' => string '宇润' (length=6)
'nianling' => string '5' (length=1)
~~~
- 序言
- 有些话想说
- 基础入门
- 简介
- 下载YurunPHP
- 运行环境
- 开发规范
- 目录结构
- 模块
- 控制器
- 项目配置
- 入口文件
- 项目目录结构
- 配置文件
- 框架编译
- 项目部署
- 控制器
- 创建控制器
- 加载模版显示页面
- AJAX返回数据
- 模型
- 创建模型
- 实例化模型
- 数据管理
- 连贯操作
- distinct
- field
- from
- where
- wherePk
- group
- having
- order
- limit
- join
- page
- headTotal/footTotal
- 连贯操作收尾方法
- select
- selectPage
- buildSQL
- selectValue
- selectBy
- getBy
- getByPk
- random
- inc
- dec
- add
- edit
- delete
- 合计函数
- save
- 执行SQL语句
- 创建数据并验证
- 字段映射
- GET/POST/COOKIE/REQUEST
- Cookie
- Session
- 数据库操作
- 配置文件
- 常用操作
- 查询记录
- 存储过程
- 数据库函数
- MSSQL
- 视图
- 调用视图
- 给视图传值
- 模版引擎
- 输出
- 使用PHP代码
- 模版标签
- if
- switch
- for
- counter
- foreach
- include
- js/css/image
- url
- 模版常量替换
- 自定义控件
- 通用属性用法
- 数据集绑定
- 下拉框(select)
- 单选框(radio)
- 单选框组(radiogroup)
- 选择框(checkbox)
- 选择框组(checkboxgroup)
- 表格(table)
- 文本框(textbox)
- 分页条(pagebar)
- 数据验证
- 验证方法
- between
- betweenEqual
- empty_str
- not_empty_str
- regex
- length
- lengthChar
- mobile
- tel
- phone
- postcode
- url
- ip
- lt/gt/ltEqual/gtEqual
- equal/unequal
- in/notin
- idcard
- 路由
- 路由配置
- 自定义分层
- 缓存
- 文件缓存
- 配置
- PHP数组配置
- 过滤域名
- 日志
- 文件日志
- 事件&插件机制
- 框架事件列表
- 多语言支持
- 定时任务
- API接口开发