要使用模型的自动创建create方法的话,ThinkPHP的表单名称就是数据表的字段名称,如果担心这样不够安全,可以定义字段映射,来隐藏实际的数据表字段名称。
下面的例子就运用了字段映射定义。请注意看表单名称和字段的对应关系。
| 标题: | |
| 邮箱: | |
| 内容: | |
| 验证码: | 输入对应的数字 |
示例源码
控制器IndexAction类
<?php
class IndexAction extends Action{
// 首页
public function index(){
$Form = D("Form");
$list = $Form->findAll();
$this->assign('list',$list);
$this->display();
}
// 处理表单数据
public function insert() {
$Form = D("Form");
if($Form->create()) {
$Form->add();
$this->redirect();
}else{
header("Content-Type:text/html; charset=utf-8");
exit($Form->getError().' [ <A HREF="javascript:history.back()">返 回</A> ]');
}
}
// 生成验证码
public function verify() {
import("ORG.Util.Image");
Image::buildImageVerify();
}
}
?>
模型 FormModel 类
<?php
class FormModel extends Model {
protected $_map = array(
'name'=>'title',
'mail'=>'email',
'remark'=>'content',
);
// 自动验证设置
protected $_validate = array(
array('name','require','标题必须!'),
array('mail','email','邮箱格式错误!',2),
array('remark','require','内容必须'),
array('verify','require','验证码必须!'),
array('verify','CheckVerify','验证码错误',0,'callback'),
);
// 自动填充设置
protected $_auto = array(
array('status','1','ADD'),
array('create_time','time','ADD','function'),
);
public function CheckVerify() {
return md5($_POST['verify']) == $_SESSION['verify'];
}
}
?>
