首页 > PHP资讯 > PHP培训技术 > ThinkPHP在使用M方法(不创建模型类)时实现自动验证与自

ThinkPHP在使用M方法(不创建模型类)时实现自动验证与自

PHP培训技术
ThinkPHP M方法实现自动验证与自动填充

通常,我们会将自动验证与自动填充规则写入模型类里,然后再用 D
方法实例化模型类来实现对表单的自动验证与自动填充功能。由于 M 方法只是实例化基础模型类而不会去实现模型类里定义的逻辑,因此 M
方法一般情况下是无法完成自动验证与自动填充的。

ThinkPHP 提供的 setProperty 方法,可以动态更改 Model
的属性。在操作中,利用 setProperty 方法便可以在使用 M 方法(不创建模型类)时实现自动验证与自动填充功能。

setProperty
方法是 Model 类的内置方法,用于设置模型的属性值,语法如下:

setProperty(string name, mixed
value)

例子:




  1. $Article = M("Article");
  2. // 自动验证规则
  3. $validate = array(
  4. array('title','require','标题不能为空!',1),
  5. array('title','','标题已经存在',0,'unique',1),
  6. array('content','require','内容必须',1),
  7. );
  8. // 自动填充规则
  9. $_auto = array(
  10. // 新增癿时候把 status 字段设置为 1
  11. array('status','1',self::MODEL_INSERT),
  12. // 新增癿时候把 create_time 字段设置为 time() 时间戳

  13. array('create_time','time',self::MODEL_INSERT,'function'),
  14. );
  15. $Article->setProperty("_validate",$validate);
  16. $Article->setProperty('_auto',$auto);

  17. // 创建数据对象
  18. if ($Article->create()){
  19. // 创建数据对象成功,写入数据
  20. $User->add();
  21. }else{
  22. // 创建数据对象失败
  23. exit($Article->getError());
  24. }

要在 M
方法中使用自动验证与自动填充,需要以数据对象的方式(create())写入数据,更多信息参见《ThinkPHP create
方法:表单数据智能写入》。

原则上讲,应该将自动验证与自动填充等逻辑在模型里面来完成,但 ThinkPHP 提供了 setProperty
方法,以方便在其他特殊情况(如使用 M 方法时)时也能实现自动验证与自动填充功能。

PHP培训技术

本文由欣才IT学院整理发布,未经许可,禁止转载。
支持40不支持0