最近项目组在使用ThinkPHP5开发系统,但官方给的文档更新太慢,其中在3.2版本上用的很方便的模型自动完成自动验证机制在TP5中还没有具体描述。
自己读了一下git上的源码,发现源码中已存在该特性了,所以找了模型测试了一下,bingo~~~
示例图:
步骤:
1、在模型类的头部引入Traits的扩展类 (PHP5.5以上版本可以不需要)
1 |
T('model/Auto'); |
2、在模型类开始的位置use一下刚引入的Traits类位置
1 2 |
// 引入traits特性类 use \traits\model\Auto; |
3、书写模型自动验证规则, 这里注意一点(TP5的自动验证规则属性没有下划线)
1 2 3 4 5 6 7 8 |
/** * 模型自动验证规则 * @var array */ protected $validate = [ // 当创建数据时longurl不存在时提示 ['longurl', 'require', '_NOT_FOUND_LONGURL_', self::EXISTS_VALIDATE, 'regex', self::MODEL_INSERT] ]; |
4、书写模型的自动完成规划,这里注意一点(TP5的自动完成规则属性也没有下划线)
1 2 3 4 5 6 7 8 9 |
/** * 模型自动完成规则 * @var array */ protected $auto = [ ['mid', 0, self::MODEL_INSERT, 'string'], ['status', 1, self::MODEL_INSERT, 'string'], ['create_time', NOW_TIME, self::MODEL_INSERT, 'string'] ]; |
5、在方法中使用create方法即可
1 |
$this->create($data) |
TP5的自动验证自动完成规则与TP3.2的规则一致。
ThinkPHP 3.2.3的 自动验证传送门
http://document.thinkphp.cn/manual_3_2.html#auto_validate
ThinkPHP 3.2.3的 自动完成传送门
http://document.thinkphp.cn/manual_3_2.html#auto_operate