说到TP的三大自动,用过的才晓得多方便。举个例子:当你注册时候,是不是要去查询数据库判断用户名是不是存在?是不是要去判断用户注册时候的两次密码是不是一样?
首先我们要清楚的知道,多看文档的话会让你更了解这个框架。
首先我们下载TP的框架,新建一个项目。然后创建一个 tocore 的数据库,里面只有一张表,SQL是:
-- phpMyAdmin SQL Dump -- version 4.4.14 -- http://www.phpmyadmin.net -- -- Host: 127.0.0.1 -- Generation Time: 2015-09-17 06:39:27 -- 服务器版本: 5.6.26 -- PHP Version: 5.6.12 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; -- -- Database: `tpcore` -- -- -------------------------------------------------------- -- -- 表的结构 `one` -- CREATE TABLE IF NOT EXISTS `one` ( `id` int(11) NOT NULL, `username` varchar(32) NOT NULL, `password` varchar(32) NOT NULL, `addtime` int(11) NOT NULL ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; -- Indexes for dumped tables -- -- -- Indexes for table `one` -- ALTER TABLE `one` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `username` (`username`); -- -- AUTO_INCREMENT for dumped tables -- -- -- AUTO_INCREMENT for table `one` -- ALTER TABLE `one` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=1;
然后修改数据库配置文件,之后在首页改成一个简单的form表单
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <form action="{:U('Index/add')}" method="post"> 用户名: <input name="name" type="text" /> 密码: <input name="password1" type="text" /> 确认密码: <input name="password2" type="text" /> <input type="submit" value="注册" /> </form> </body> </html>
然后控制器的话 添加一个add方法:
public function add(){ if(!IS_POST){ $this->error("非法访问"); } $one = D("One"); dump($one->reg()); } }
还有就是要写一个Model:
<?php namespace Home\Model; use Think\Model; class OneModel extends Model{ // 批量验证 protected $patchValidate = true; // 字段映射 protected $_map = array( "name"=>"username", // 表单值 数据库字段 "password1"=>"password", ); //字段验证 protected $_validate = array( array('username','','帐号名称已经存在!',0,'unique',1),// 字段 值/函数名 提示 验证条件 附加规则 触发时间 array("password","password2","两次输入的密码不一致",0,"confirm"), array("addtime","time",1,"function"), ); //自动处理 //protected $_auto = array( // array('addtime','time',1,'function'), //); public function reg(){ if (!$this->create()){ return $this->getError(); }else{ return $this->add(); } } }
在我们提交数据的时候会进行判断,这里我是直接打印出来的,可以根据需要去修改。注意 Model中的方法和M连贯操作的方法名不能一样
当我们输入 admin admin admi 的时候提示:
当我们输入 admin admin admin 的时候提示:
当我们再次输入 admin admin admi 的时候提示:
然后我们输入 admin admin admin 的时候
这样的处理方式,避免了我们需要很多If判断,合理的利用框架自带的方法,可以节约很多时间的。
上一篇: 美化ThinkPHP模板...