thinkphp怎样创建数据会自动验证

 我来答
lalahp010
2017-03-13 · TA获得超过146个赞
知道答主
回答量:313
采纳率:0%
帮助的人:91.7万
展开全部

模型类:

<?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方法.

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式