tp商城(2)


---------------------------
——————————————TP  商城 2  goods栏目————————
------------------------------

namespace Home/Controller ;
use  Think/Controller ;

-------------------------------

简化重复的代码  在controller 里边写;
因为每次都要先实例化一个model构造函数

$model = null ;
public function __construct(){
    parent :: __construct();           //父类的构造方法
    return $this -> model = new \Home\GoodsMolde();
}

--------------------------------
自动XXXX:

====来源 tp手册 数据创建 create ;

---------
在 model 下定义自动规则 实例化 这个类的时候 自动生效
验证数据的合法性 if ...  else ... if ... else ...
简化 用自动验证:

//controller 中  用create方法才能有自动验证前提
//create() 的 过程 会检测数据的(合法性 --自动验证);
//create 自动根据表单数据创建数据对象  数据字段多的情况下尤为明显

$this->model ->create();
$this->model->add();

if(!$this->model->create()) {
    echo $this->model->getError();
}else{
    $this->model->add();
}

//getError();方法是获取自动验证中自己写的哪个出错信息的
// array(验证字段1,验证规则,错误提示,[验证条件,附加规则,验证时间]),
//这里边封装的错误提示


————————自动验证 在哪里验?——————————
//在model里 实例化调用的
protected $_vailable ();

只有业务逻辑才是人做的 其他的代码话!!
--------------------------------
————————————————————————————————
//自动验证  写在GoodsModel 里边

protected $_validate = array(
    // array(验证字段1,验证规则,错误提示,[验证条件,附加规则,验证时间]),
    array('goods_name' , '5,16' , '商品名称应5-16字符',1, 'length',3),
    array('is_best' , '0,1' , '精品只能0,1',0,'in',3),   /? 0 存在字段则验证 为什么?checkbox特性/
    array('goods_sn' , '','货号不能重复',1,'unique' , 3),
    array('cat_id' , 'ckc','栏目不存在',1,'callback' , 3),
);

    protected function ckc() {
        $cat = D('Home/Cat');
        return $cat->find(I('post.cat_id')) ? true : false;
    }
//方法:回调方法   和其他的一样都是 return 的 true / false  以便判断是不是能通过!
//判断自己特殊的业务逻辑规则

注释:
1.checkbox 标签的规则 如果勾选则传过去  如果没勾选 则没有这个字段( 0 存在字段则验证)
2.equal 验证是否等于某个值,该值由前面的验证规则定义
3.array('is_best' , '1' , '精品只能0,1',0,'equal',3), 改进后

unique 验证是否唯一,系统会根据字段目前的值查询数据库来判断是否存在相同的值,
       当表单数据中包含主键字段时unique不可用于判断主键字段本身
--------------------------------
验证条件
包含下面几种情况:0,1,2

self::EXISTS_VALIDATE 或者0 存在字段就验证(默认)
self::MUST_VALIDATE 或者1 必须验证
self::VALUE_VALIDATE或者2 值不为空的时候验证
————————————————————————————————
————————————————————————————————




//自动完成

protected $_auto = array(
    // array(完成字段1,完成规则,[完成条件,附加规则]),
    array('add_time','time',1,'function'),
    array('last_update' , 'time' , 2 , 'function'),
);

例如上次修改时间啊。。
表单中没有明确传过来就导致这个字段为空
因此需要自动填充$_auto

callback 和 function 区别
--------------------------------
————————————————————————————————


自动过滤

过滤不存在的字段  代码的层面上
例如 firebug 里边里边 新加的标签  tp 有自带的程序的基本过滤

业务逻辑的层面上
过滤不允许修改的   如 注册时的身份证 自动过滤掉 再修改的时候 你没有权限
限制你 修改的字段  不允许你修改


------tp手册 表单合法性检测 $insertfield  $updatefield
限制你可以新增的 和可以修改的字段
insertFields 和 updateFields属性的设置采用字符串(逗号分割多个字段)或者数组的方式。

protected $insertFields = 'goods_sn,cat_id,brand_id,goods_name  ... ... ';
protected $updateFields = array('nickname','email');









--------------------------------
--------------------------------
--------------------------------
--------------------------------
















--
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

银色种子

打赏 >100 请留言,并私信

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值