本文较为详细的讲述了ThinkPHP中的三大自动,是非常重要的应用,分享给大家供大家参考。具体如下:
一、自动验证
格式如下:
1
|
array ( '验证字段' , '验证规则' , '错误提示' , '验证条件' , '附加规则' , '验证时间' )
|
参数说明:
验证字段:需要验证表单字段名称
验证规则:必须要结合附加规则一起使用
错误提示:如果出现错误,抛出一个什么样的错误提示告知用户
验证条件:0、1、2
附加规则:1、regex使用正则验证 2、function使用函数验证 3、callback回调 4、confirm验证表单当中两个字段是否相同 5、验证是否等于某个值 6、in是否在某一个范围内 7、验证是否唯一
TP封装:require 字段必须验证;eamil 验证邮箱;url 验证url地址;currency 货币;number 数字;
验证时间:指数据库操作时间的验证时机,新增数据时验证Model::MODEL_INSERT;编辑的时候验证Model::MODEL_UPDATE;全部情况下验证Model::MODEL_BOTH;
aoli/Home/Tpl/default/User/reg.html页面如下:
1
2
3
4
5
6
7
8
|
< form action = "__URL__/regadd" method = "post" >
用户名:< input type = "text" name = "username" />< br />
密码:< input type = "password" name = "password" />< br />
重复密码:< input type = "password" name = "repassword" />< br />
注册时间:< input type = "text" name = "createtime" />< br />
注册IP:< input type = "text" name = "createip" />< br />
< input type = "submit" value = "注册" />
</ form >
|
aoli/Home/Lib/Model/UserModel.class.php页面如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
<?php
class UserModel extends Model{ //对应数据库中的表user
protected $_validate = array (
array ( 'username' , 'require' , '用户名必填' ),
array ( 'username' , 'checklen' , '用户名长度过长或过短' ,0, 'callback' ),
array ( 'password' , 'require' , '密码必填' ),
array ( 'repassword' , 'require' , '重复密码必填' ),
array ( 'password' , 'repassword' , '两次密码不一致' ,0, 'confirm' ),
array ( 'createtime' , 'number' , '您输入的不是数字' ),
array ( 'createip' , 'email' , '邮箱格式不正确' ),
);
function checklen( $data ){
if ( strlen ( $data )>15 || strlen ( $data )<5){
return false;
} else {
return true;
}
}
}
?>
|
aoli/Home/Lib/Action/UserAction.class.php页面如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<?php
class UserAction extends Action {
function reg(){
$this ->display();
}
function regadd(){
$user =D( 'user' );
if ( $user ->create()){
if ( $user ->add()){
$this ->success( '注册成功' );
} else {
$this ->error( '注册失败' );
}
} else {
$this ->error( $user ->getError());
}
}
}
?>
|
二、自动完成(自动填充)
自动完成也是ThinkPHP当中的一个成员方法,在create的时候,自动执行
规则如下:
1
|
array ( '填充字段' , '填充内容' , '填充条件' , '附加规则' );
|
简单示例如下:
1
2
3
4
5
|
protected $_auto = array (
//array( 'status','1'), // 新增的时候把 status 字段设置为 1
array ( 'password' , 'md5' ,1, 'function' ) , // 对 password 字段在新增的时候使 md5 函数处理
array ( 'createtime' , 'time' ,3, 'function' ), // 对 create_time 字段在更新的时候写入当前时间戳
);
|
二、自动映射(字段映射)
自动映射:将数据库的字段映射成别名,在表单中就可以使用别名了。
简单示例如下:
1
2
3
4
|
protected $_map = array (
'name' => 'username' ,
'pass' => 'password' ,
);
|
详细本文所述技巧对于大家学习及使用ThinkPHP有一定的帮助作用。