ThinkPHP 自动验证是怎么弄得?

比如我有一个UserAction.class.php和一个UserModel.class.phpUser控制器有个登表单处理方法,怎么UserModel自动验证表单输入内... 比如我有一个UserAction.class.php和一个UserModel.class.php
User控制器有个登表单处理方法,怎么UserModel自动验证表单输入内容是否合法.
我试了一下官方文档的列子,结果老是出现非法数据对象。要么就是不管输入什么都是验证通过。请问俩个文件里面分别怎么写。最好给个列子
展开
 我来答
PHPJungle
2016-05-23 · TA获得超过2130个赞
知道小有建树答主
回答量:247
采纳率:50%
帮助的人:231万
展开全部

模型类:

<?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 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图... 点击进入详情页
本回答由AiPPT提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式