ThinkPHP 自动验证是怎么弄得?
发布网友
发布时间:2022-04-07 05:00
我来回答
共1个回答
热心网友
时间:2022-04-07 06:29
模型类:
<?php
namespace Home\Model;
use Think\Model;
class CarsModel extends Model {
protected $tableName = 'area';
protected $_validate = array(
array('name','require','Name必须!',1),
array('level','require','Level必须!',1),
array('name', '1,4', '评论长度不符!', 1, 'length'), // 验证长度1,4
array('level',array(0,1,2),'Level值的范围不正确!',2,'in'), // 验证值域
);
}
控制器:
<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller
{
public function index()
{
$data = array();
$data['name'] = '';
$data['level'] = 12;
$cars = D('Cars');
if (! $cars->create($data)) {
echo $cars->getError();
} else {
echo '插入成功!';
}
}
}
说明:
Think\Model::create(mixed $data, string $type)
方法是支持参数输入的,如果没有传参,函数内部会取客户端POST过来的数据,
如果既没有传对象(或者数组)类型的$data,也没有POST数据 ,就会报错,非法的数据对象.
public function create($data='',$type='') {
// 如果没有传值默认取POST数据
if(empty($data)) {
$data = I('post.');
}elseif(is_object($data)){
$data = get_object_vars($data);
}
// 验证数据
if(empty($data) || !is_array($data)) {
$this->error = L('_DATA_TYPE_INVALID_');// 语言包对应的含义:非法的数据对象
return false;
}
}
综上所述:需要保证你客户端POST数据过来了,或者显式传入需要验证的$data到create方法.