M方法自动验证与自动填充


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 方法时)时也能实现自动验证与自动填充功能。

    ThinkPHP 自动验证及验证规则详解
    ThinkPHP 自动验证实例
    ThinkPHP自动验证之动态改变验证规则
    M方法自动验证与自动填充

zgguan.com(it学习网) — 提供最好的 XHTML教程DIV+CSS教程JavaScript教程PHP教程ThinkPHP教程