ThinkPHP 自动验证是怎么弄得?
比如我有一个UserAction.class.php和一个UserModel.class.phpUser控制器有个登表单处理方法,怎么UserModel自动验证表单输入内...
比如我有一个UserAction.class.php和一个UserModel.class.php
User控制器有个登表单处理方法,怎么UserModel自动验证表单输入内容是否合法.
我试了一下官方文档的列子,结果老是出现非法数据对象。要么就是不管输入什么都是验证通过。请问俩个文件里面分别怎么写。最好给个列子 展开
User控制器有个登表单处理方法,怎么UserModel自动验证表单输入内容是否合法.
我试了一下官方文档的列子,结果老是出现非法数据对象。要么就是不管输入什么都是验证通过。请问俩个文件里面分别怎么写。最好给个列子 展开
1个回答
展开全部
模型类:
<?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方法.
AiPPT
2024-09-19 广告
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图...
点击进入详情页
本回答由AiPPT提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询