TP3.2复习笔记

来源:互联网 发布:北京大红门淘宝培训班 编辑:程序博客网 时间:2024/06/05 15:33
/******************************************************************/     TP3.2操作要点/******************************************************************//******************************************************************//*********************************************************************//*****************************【TP前后台部署】************************/{1.首先页面访问TP文件,自动生成模块文件2.复制Application应用文件下的Home,修改为后台目录Admin3.在Admin下的Conf中config.php文件中设置配置return array(//'配置项'=>'配置值''DEFAULT_MODULE'        =>  'Admin',  // 默认模块'DEFAULT_CONTROLLER'    =>  'Index', // 默认控制器名称'DEFAULT_ACTION'        =>  'index', // 默认操作名称);[注意]Admin下的文件命名空间注意修改为Adminag: namespace Home/Controller;  ---->修改为  namespace Admin/Controller;至此,前后台可分离访问!后台通过localhost/tp3/index.php/Admin/访问!!!}/*********************************************************************//*****************************【引入外部页面】************************//** * 【view视图层引入外层public样式文件】 */{在 <head></head>标签中写入以下代码<base href="__PUBLIC__/Admin/">}/** * 【view视图层iframe引入其他页面】 */{1.在控制器设置方法展示2.视图层通过U方法引入<iframe src="{:U('Index/home')}" frameborder="0"></iframe>}/** * 【view视图层include引入其他页面】 */{<include file="public/header"/>[注意]:include标签最后的/,否则引入失败}/***************************************************************************//****************************【实例化模型】*********************************/M()实例不需要加载具体的模型类,若只进行CURD操作,性能更高;M实例化过程{默认情况下是直接实例化系统的\Think\Model类}D()实例需要加载具体的模型类,可在模型类中自定义方法。D方法可以自动检测模型类,如果存在自定义的模型类,则实例化自定义模型类;D实例化过程{检测Model是否存在自定义模型类------->(不存在)检测公共模块下是否存在------>(不存在)}/*********************************************************************//******************************【定制404页面】*************************/{//设置页面404    /* 页面不存在时,调取_empty方法 */    public function _empty()    {        echo "页面不存在";    }    [说明]设置在控制器中,当调取该控制器下不存在方法时,调用_empty()方法}/*********************************************************************//******************************【定制跳转页面】*************************/跳转配置设置['TMPL_ACTION_ERROR'     =>  THINK_PATH.'Tpl/dispatch_jump.tpl', // 默认错误跳转对应的模板文件    'TMPL_ACTION_SUCCESS'   =>  THINK_PATH.'Tpl/dispatch_jump.tpl', // 默认成功跳转对应的模板文件][说明]1.配置设置位置:  根目录ThinkPHP/Conf/convertion.php查询上述配置参数2.跳转页面位置:  根目录ThinkPHP/Tpl/dispatch_jump.tpl----可编辑原始页面修改--也可另外自定义页面,修改配置参数(模板文件路径)/****************************************************************************//******************************【模板系统变量的使用】************************/[说明]普通的模板变量需要首先赋值后才能在模板中输出,但是系统变量则不需要,可以直接在模板中输出,系统变量的输出通常以{$Think 打头1、变量输出($_SERVER、$_POST、$_GET、$_REQUEST、$_COOKIE、$_SESSION){ag:控制器定义session:$SESSION['uname'] = "ning";控制器输出:  echo $_SESSION['uname']视图模板输出:  {$Think.session.uname}}2、配置输出{Conf下config定义配置项<?phpreturn array(//'配置项'=>'配置值''NAME' =>'ningwang','PWD'  =>'123456',#[说明]在Conf下创建配置分支,加载const.php,const1.php'LOAD_EXT_CONFIG' => 'const,const1');?>ag:控制器输出:echo C('NAME');视图模板输出:  {:C('NAME')}或{$Think.config.NAME}}/**********************************************************//** * view视图输出变量 */{#php标签输出方法一:  <php>__CONTROLLER__<php>方法二:  <?php echo __CONTROLLER__ ?> #框架可设置禁止视图使用<?php ?>标签}/**********************************************************//** * 路径常量 */{echo __CONTROLLER__,"<br>"; #返回当前控制器路径echo __MODULE__,"<br>"; #返回当前模块路径echo __ACTION__,"<br>"; #返回当前方法路径echo __URL__;  #只在模板视图层起作用,返回当前控制器路径<!-- 结果:/major/major_self/TP3/test/index.php/Home/Index/major/major_self/TP3/test/index.php/Home/major/major_self/TP3/test/index.php/Home/Index/urlUse__URL__ --> [说明]可使用路径常量进行跳转,也可使用U()方法【手册中控制器/URL生成】}/**********************************************************************//****************************【单字母函数】****************************//** * U()跳转 */{U('地址表达式',['参数'],['伪静态后缀'],['显示域名'])ag: U('Home/Index/index',array('id'=>1,'name'=>'ning'),'php',true);注意一点:在模板中使用函数需要在函数名前面加一个冒号:ag:<a href="{:U('Login/login','id=1')}"></a>}/** * C() --- 获取配置文件config.php中的参数 *//************************************************************************//**************************【CURL操作】**********************************/$data = array('art_title'=>'寕王特制','art_content'=>'内容');$datas = array(array('art_title'=>'寕王特制1','art_content'=>'内容1'),array('art_title'=>'寕王特制2','art_content'=>'内容2'),array('art_title'=>'寕王特制3','art_content'=>'内容3'));$obj = D('Article'); //实例化模型$obj->add(数组数据);添加一条记录: $obj->add($data);   //返回记录的主键id添加多条记录: $obj->addAll($datas);  //返回添加的第一条主键id$obj->delete(主键值);删除单条记录: $obj->delete('1'); //删除成功返回受影响行数删除多条记录: $obj->delete('1,2,3');[注意] $obj->delete();  //删除失败,必须指定主键值$obj->Where(条件)->save(数组)更新记录: $obj->Where('id=1')->save($data);查询所有数据: $obj->select();  //返回二维数组查询指定数据[多条]: $obj->select('1,3');  //返回id为1,3的数据查询指定数据[单条]: $obj->find('1');//返回id为1的数据(一维数组)[附加说明]$obj->select(array('index'=>'字段名'));select语句查询成功是返回二维数组,下标是从0开始,这种下标对我们并什么用,我们可以指定某些字段作为二维数组的下标,一般都是使用主键字段作为下标值。【原生SQL语句操作】1、查询语句: $obj->query($sql);  //成功返回二维数组2、增删改语句: $obj->execure($sql); //成功返回受影响行数/************************************************************************//**************************【模型的连贯操作方法】************************/{field() --- 获取结果集中指定的字段where() --- 条件查询order() --- 排序操作group() --- 分组操作limit() --- 限制条数join() ---- 联表操作}[注意]以上的连贯操作没有先后顺序原生SQL语句基本顺序: where--->order--->group--->having--->limit实例操作{$data = $obj->field("cat_id,cat_name,pid")->where("cat_id>3")->order("cat_id desc")->limit("5,6")->select();}连贯操作总结{$db=M('order'); //主表$rs=$db ->join("tp_user u on tp_order.uid=u.uid") //附表连主表    ->join("tp_area a on tp_order.aid=a.aid")    ->join("tp_disease d on tp_order.did=d.did")    ->join("tp_source s on tp_order.sid=s.sid")    ->join("tp_source f on tp_order.fid=f.sid")    ->order("inputtime desc")//主表字段    ->limit($page->firstRow.','.$page->listRows)    ->field("tp_order.*,u.uname,a.aname,d.dname,s.sname sname,f.sname fname")//需要显示的字段    ->select();}/** * Group By 使用方法 */SELECT goods_id,count(goods_id) as size from  goods_order GROUP BY goods_id结果:----------------goods_id | size----------------    1    |  2----------------1    |  1----------------1    |  1/*************************************************************************//****************************【模型的自动验证/完成】***********************/1、在Model中设置验证规则$_validate/自动完成$_auto{1-1、设置自动验证规则[说明]按数组顺序验证提交数据[规则参数]array(array('字段名','验证规则','错误提示',['验证条件','附加规则',验证时间]););【实例】:{protected $_validate = array(array('lin_repwd','lin_pwd','确认密码不正确',0,'confirm'),array('lin_email','email','邮箱格式不正确'),array('lin_name','require','链接名称已经存在',0,'unique',1),array('lin_url','require','链接路径必须写'),);}----------------------------------------------------------------------/** * 1-2、定义自动完成[时间的添加] * [说明]附加规则为callback,表示完成规则为当前模型类中的一个方法 * [参数说明] * array( * array('字段名','完成规则','完成条件','附加规则'); * ); */protected $_auto = array(array('lin_time','checkTime','1','callback'),);public function checkTime($time){if($time){return strtotime($time);}else{return time();}}}2、在Controller中调取验证{$obj = D('Link');$obj->create();  //通过create()方法调取验证规则【实例】{if(!$obj->create()){$obj->getError();die;  //获取验证失败信息}else{echo "验证通过,进行下步操作";}}}

原创粉丝点击