您的位置:首页 > 编程语言 > PHP开发

tp商城(2)

2016-04-20 01:39 393 查看
---------------------------

——————————————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');

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

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

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

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

--
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: