ThinkPHP M方法实现自动验证与自动填充

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

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

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

setProperty(string name, mixed value)

例子:

$Article = M("Article");

// 自动验证规则

$validate = array(

array('title','require','标题不能为空!',1),

array('title','','标题已经存在',0,'unique',1),

array('content','require','内容必须',1),

);

// 自动填充规则

$_auto = array(

// 新增癿时候把 status 字段设置为 1

array('status','1',self::MODEL_INSERT),

// 新增癿时候把 create_time 字段设置为 time() 时间戳

array('create_time','time',self::MODEL_INSERT,'function'),

);

$Article->setProperty("_validate",$validate);

$Article->setProperty('_auto',$auto);

// 创建数据对象

if ($Article->create()){

// 创建数据对象成功,写入数据

$User->add();

}else{

// 创建数据对象失败

exit($Article->getError());

}

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

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

php yanzhengm,ThinkPHP 在使用M方法(不创建模型类)时实现自动验证与自动填充相关推荐

  1. php 自动验证类,Thinkphp实现自动验证和自动完成

    这篇文章主要介绍了Thinkphp实现自动验证和自动完成的相关资料,需要的朋友可以参考下 Thinkphp的自动验证和自动完成都是根所表单提交的内容来的,对部分数据进行规则验证和处理后插入到数据库. ...

  2. 创建一个长方形类,成员域有长方形的长和宽,成员方法有计算长方形的面积,在main方法中创建长方形类对象,并调用计算长方形面积的方法。

    package TestDemo; /** 创建一个长方形类,成员域有长方形的长和宽,成员方法有计算长方形的面积.* 在main方法中创建长方形类对象,并调用计算长方形面积的方法.*/ import ...

  3. odoo10参考系列--ORM API 一(记录集、环境、通用方法和创建模型)

    记录集 版本8.0中新东西: 这个在Odoo8.0中新加的API的页面文档应该是不断向前发展的主要开发API.同时它还提供了关于移植或桥接版本7和更早版本的"旧API"的信息,但没 ...

  4. Scala apply()方法用于创建伴生类对象

  5. php字段验证规则,ThinkPHP 自动验证及验证规则详解

    ThinkPHP 自动验证及验证规则详解 ThinkPHP 自动验证 ThinkPHP 内置了数据对象的自动验证功能来完成模型的业务规则验证.自动验证是基于数据对象的,而大多情况下数据对象是基于 $_ ...

  6. php框架m方法详细,Thinkphp框架中D方法与M方法的区别是什么

    Thinkphp框架中D方法与M方法的区别是什么 发布时间:2021-02-06 23:09:38 来源:亿速云 阅读:69 作者:小新 小编给大家分享一下Thinkphp框架中D方法与M方法的区别是 ...

  7. php中的where用法,ThinkPHP中where()使用方法详解

    本文介绍thinkphp的where()方法的用法.where方法可以用于对数据库操作的结果进行筛选.即sql查询语句中的where子句. 今天来给大家讲下查询最常用但也是最复杂的where方法,wh ...

  8. 在thinkphp框架中如何对多表进行操作(thinkphp多表查询方法)

    在thinkphp框架中如何对多表进行操作(thinkphp多表查询方法) 本文讲解了在thinkphp框架中如何对多表进行操作,ThinkPHP是一个开源的PHP框架,是为了简化企业级应用开发和敏捷 ...

  9. thinkphp模版调用函数方法

    原文:thinkphp模版调用函数方法 {变量|函数1|函数2|函数3=参数1,参数2,参数3,###} ###为第4个参数,代表变量替换为第4个参数 举例: {$username|substr=0, ...

最新文章

  1. 视频编解码之理论概述 和即时通信
  2. BUX让你轻松赚美元
  3. 【Android UI设计与开发】第01期:引导界面(一)ViewPager介绍和使用详解
  4. 谷歌云使用账号密码_如何使用Google密码检查
  5. 软考考前冲刺第一章计算机硬件基础知识
  6. 一文说清Elasticsearch的核心概念
  7. 8种最坑的SQL错误用法,你有没有踩过坑?
  8. 螺旋矩阵c++语言_一起刷 leetcode 之螺旋矩阵(头条和美团真题)
  9. WPF开发为按钮提供添加,删除和重新排列ListBox内容的功能
  10. android开发学术报告,基于Android应用的安全防护技术研究
  11. kubernetes视频教程笔记 (30)-安全-鉴权Authorization
  12. OpenCV绘制多边形的代码
  13. 华为云虚拟服务器怎么搭建,云服务器怎么搭建虚拟主机
  14. 实现1.1、1.1.1的多级编号文档排版
  15. 计算机硬件系统的运算器又称为,2016计算机专业知识:计算机硬件系统(一)...
  16. 微信小程序赋能会员管理和会员营销互动
  17. matlab中逗号分号冒号方括号,matlab中分号、冒号、逗号等常用标点符号的功能和用法总结...
  18. java搭建直播平台
  19. 1.一个整形数组的最大值
  20. 初识Docker:(5)Docker自定义镜像

热门文章

  1. pc 图片预览放大 端vue_移动端Vue.js的图片预览组件,支持放缩、滑动功能!
  2. mysql分页查询_4种MySQL分页查询优化的方法,你知道几个?
  3. springboot接收JSONArray
  4. Python 开发一个间谍小程序
  5. 趣图:如何假装自己是一个IT人?
  6. Python 制作微信全家福,你就是朋友圈最亮的仔!
  7. JAVA实现可视化的xpath_Java学习之XPath
  8. html点击按钮弹出悬浮窗_网课助手1.0 支持悬浮窗搜题等多功能
  9. php重量,在PHP中按重量生成随机结果?
  10. java opennlp_OpenNLP中语言检测模型训练和模型的使用