<就可以,不用一定有Public控制模块 $this- display(别的主题风格下的 文档夹下的 模版文档);//必须打开主题风格适用 $this- display( my:Index:index ); $this- display(一个url相对路径); $this- display( ./ ); $this- display( ./ , utf-8 , text/xml ); $this- show($content); 3.fetch方式 得到模版文档中的內容,以标识符串方式回到 $content=$this- fetch( Public:error ); 4.show方式 不用模版文档,能够立即輸出模版內容 $content=$this- fetch( Public:error ); dump($content); $content=str_replace( h1 , i ,$content); $this- show($content); 模版中的取值 //$this- assign( name , 赵桐正 ); $this- name= 赵桐正2 $this- display(); 模版更换 __PUBLIC__:会被更换成当今网站的公共性文件目录 一般是 /Public/ __ROOT__: 会更换成当今网站的详细地址(没有网站域名) __APP__: 会更换成当今新项目的URL详细地址 (没有网站域名) __GROUP__:会更换成当今排序的URL详细地址 (没有网站域名) __URL__: 会更换成当今控制模块的URL详细地址(没有网站域名) __ACTION__:会更换成当今实际操作的URL详细地址 (没有网站域名) __SELF__: 会更换成当今的网页页面URL 拆换模版自变量标准,改动配备项 TMPL_PARSE_STRING = array( //加上自身的模版自变量标准 __CSS__ = __ROOT__. /Public/Css , __JS__ = __ROOT__. /Public/Js , ), 模版中的自变量 自变量輸出 1.标量輸出 2.数字能量数组輸出 {$name[1]} //数据库索引数字能量数组 {$name['k2']} //关系数字能量数组 {$name.k1} 3.目标輸出 {$name:k} {$name- k} 系统软件自变量 {$Think.get.id} 应用涵数 {$name|strtoupper} 转化成的编译程序后文档是 ?php echo (strtoupper($name)); ? {$name|date= Y m d H:i:s ,###} 默认设置值 {$name|default= 这儿是默认设置值 } 计算符 + * / % ++ {$name++} 模版中的基本英语的语法 导进CSS和JS文档 1、css link js scr link rel= stylesheet type= text/css href=jzxy/201410/’__PUBLIC__/Css/test.css’/> script src=jzxy/201410/’__PUBLIC__/Js/test.js’> 2.import import type= js file= Js.test / //导进Public文档夹下边的Js文件目录中的test.js文档,import标识能够省去type特性,默认设置便是js的 import type= css file= Css.test / //能够变更默认设置文档夹 设定basepath特性 import type= js file= Js.my basepath= ./Other / 3.load //方式能够全自动检验导进的文档种类 load href=jzxy/201410/’__PUBLIC__/Js/test.js’ /> 支系构造 1、if if condition= $sex eq 男 男生是泥巴做的 else / 女性是水做的 /if if condition= $age lt 18 未满十八岁 elseif condition= $age eq 18 / 青春年少青春年少 else / 成年人 /if gt lt == eq = elt = egt != neq === heq !== nheq switch name= number case value=jzxy/201410/’1′>一个僧人抬水吃 case value=jzxy/201410/’2′>2个僧人台水吃 case value=jzxy/201410/’3′>三个僧人没水吃 default/ 这儿是默认设置值 /switch 循环系统构造 1.for table border= 1 width= 500 for start= 10 end= 00 name= j step= -2 comparison= gt tr td {$j} /td td abc /td /tr /for /table 2.volist volist name= list id= v {$v.username} br/ /volist 3.foreach foreach name= list item= v key= k {$k} -{$v} br/ /foreach 独特标识 1、较为标识 eq或是 equal 相当于 neq 或是notequal 不一于 gt 超过 egt 超过相当于 lt 低于 elt 低于相当于 heq 恒相当于 nheq 不恒相当于 2.范畴标识 in in name= n value=jzxy/201410/’9,10,11,12′>在这里些数据里边没有这种数据的范畴内 notin name= n value=jzxy/201410/’9,10,11,12′>在这里些数据里边没有这种数据的范畴内 between notbetween name= n value=jzxy/201410/’1,10′>{$n}在1-10中间{$n}没有1到10中间 3.present 标识来分辨模版自变量是不是早已取值, present name= m m有取值 else/ m沒有取值 /present 4.Empty empty标识分辨模版自变量是不是为空, empty name= n n为空取值 else/ n有值 /empty 5.Defined 分辨变量定义是不是早已界定 6.Define 在模版中界定变量定义 7.Assing 模版中自变量取值 别的标识应用 1、在模版中立即应用PHP编码 php echo 我是赵桐正 /php 2、提议变更上下定界符 在配备文档中更改 TMPL_L_DELIM = ' { , //改动左定界符 TMPL_R_DELIM = } , //改动右定界符 模版的应用方法 模版包括 include file= 详细模版文档名 / include file= ./Tpl/default/ / include file= read / include file= Public:header / include file= blue:User:read / include file= $tplName / include file= header title= ThinkPHP架构 keywords= 开源系统WEB开发设计架构 / 在模版中自变量用[自变量]接纳 include file= file1,file2 / 模版3D渲染 1、全自动打开模版3D渲染 设定配备文档 LAYOUT_ON = true,//打开模版3D渲染 提前准备一个模版3D渲染网页页面,在网页页面中应用{__CONTENT__}接纳实际模版网页页面的內容 假如在摸一个实际模版中不期待应用3D渲染模版,能够在页首加上{__NOCONTENT__} 2、不动启全自动模版3D渲染能够在每个实际网页页面的页首加上 layout name= layout / 3.应用方法 在3D渲染模版文档中还可以应用别的模版文档的內容 include file= Public:header / body p 这儿是3D渲染网页页面!!! /p {__CONTENT__} /body /html 模版的承继 操纵器的控制模块和实际操作 空控制模块和空实际操作 1、空实际操作 function _empty($name){ $this- show( $name 不会有 a href=jzxy/201410/’__APP__/Index/index’>回到”); } 2.空控制模块 class EmptyAction extends Action{ function index(){ $city=M( City ); $arr=$city- select(); $this- assign( list ,$arr); $name=MODULE_NAME; $this- display( City:$name ); } } 外置实际操作和后置实际操作 1、外置实际操作: _before_实际操作名 2、后置实际操作: _after_实际操作名 URL URL标准 1、默认设置是区别尺寸写的 2、假如大家不愿区别尺寸写能够改配备文档 URL_CASE_INSENSITIVE = true,//url不区别尺寸写 3、假如控制模块名叫 UserGroupAction 那麼url找控制模块就必需要写出 /user_group/index 4、假如 URL_CASE_INSENSITIVE = false 那麼url还可以写为 /UserGroup/index URL伪静态数据 URL_HTML_SUFFIX = html|shtml|xml ,//限定伪静态数据的后缀名 URL路由器 1、起动路由器 要在配备文档中打开路由器适用 2、应用路由器 1.标准表述式配备路由器 my = Index/index ,//静态数据详细地址路由器 :id/:num = Index/index ,//动态性详细地址路由器 year/:year/:month/:date = Index/index ,//动态性和静态数据混和详细地址路由器 year/:yeard/:monthd/:dated = Index/index ,//动态性和静态数据混和详细地址路由器 再加 d意味着种类只有是数据 my/:id$ = Index/index ,// 再加$表明详细地址中只有是 my/1000 后边不可以有别的內容了 2.正则表达式表述式配备路由器 /^year/(d{4})/(d{2})/(d{2})/ = Index/index?year=:1 month=:2 date=:3 3、留意事宜: 1.越繁杂的路由器越向前面放 URL_ROUTE_RULES = array( my/:year/:month:/:day = Index/day , my/:idd = Index/index , my/:name = Index/index , ) 2.可使用$做为彻底配对的路由器标准 URL_ROUTE_RULES = array( my/:idd$ = Index/index , my/:name$ = Index/index , my/:year/:month:/:day$ = Index/day , ), 3.用正则表达式配对的方法 URL_ROUTE_RULES = array( /^my/(d+)$/ = Index/index?id=:1 , /^my/(w+)$/ = Index/index?name=:1 , /^my/(d{4})/(d{2})/(d{2})$/ = Index/day?year=:1 month=:2 day=:3 , ), URL重新写过 URL转化成 排序、网页页面自动跳转与ajax 多运用配备方法 应用排序 网页页面自动跳转 $this- success( 查寻取得成功 ,U( User/test )); $this- redirect( User/test , ,5, 网页页面已经跳 ); Ajax方法 大C方式 获得配备文档中数字能量数组名字和值 echo C( DB_USER ); 大F方式 文档解决 写:F( 文档名 , 数字能量数组 , 文件目录 ); 读:F( 文档名 , , 文件目录 ); 大U方式 URL解决 在PHP里 U( 方式名 ) 在模版中 当今涵数{:U( 方式名 )} 别的涵数{:U( 涵数/方式名 )} *文档引进 css file= __PUBLIC__/css/base.css / js file= __PUBLIC__/js/base.js / *表格解决 方式1 $this- _post( ); 获得递交表格,会应用涵数htmlspecialchars()过虑 $username=$this- _post( username ); 方式2 I( username ); [3.1.3新作用] 大I,全自动分辨post和get $username=I( username ); echo I( username , 不会有值时的默认设置值 , 应用涵数 ); 查询是不是了解据递交: print_r(I( post. )); 严禁表格解决涵数的浏览,提高安全性性 方式1 if(!$this- isPost()) _404( 网页页面不会有 ,U( index )); echo 一切正常递交'; 方式2 (强烈推荐) halt 网页页面能够订制不正确网页页面: if(!IS_POST) halt( 网页页面不会有 ); echo 一切正常递交'; 制订方式: 加上: TMPL_EXCEPTION_FILE = ./Public/ , 文档接纳不正确內容:./Public/,只有写原生态php,适用变量定义,如__APP__ ?php echo $e['message']; ? //回到插进的ID值,数据信息库从1刚开始 if(M( user )- data($data)- add()){ $this- success( 加上取得成功 , index ); }else{ $this- error( 加上不成功 ); } *輸出到模版 1,数据信息提前准备 方式1 $this- assign( 自变量名 , 自变量值 ) 方式2 $this- 自变量名= 自变量值'; 方式3(新版本本,减少了编码) $this- assign( 自变量名 , 自变量值 )- display(); 方式4(一行拿下) $this- assign( data ,M( User )- select())- display(); 2,模版輸出 方式1(.英语的语法会分辨是目标還是数字能量数组,配备主要参数:TMP_VAR_IDENTIFY= array , 那样便会觉得是数字能量数组,以提升速率) foreach name= data item= v {$v.username} {$v.password} {$v.time|date= y-m-d H:i:s,### } /foreach 应用涵数 {:phpinfo()} 方式2 volist *排序运用(运用组)前后左右台仅用一个通道文档 idnex.php (默认设置) ?php define( APP_NAME , App ); define( APP_PATH , ./App/ ); define( APP_DEBUG , TRUE ); require ./'; ? App/ ?php return array( //打开排序 APP_GROUP_LIST = Index,Admin , DEFAULT_GROUP = Index , TMPL_FILE_DEPR = _ , //默认设置模版隔开符为_并非文档夹方式 ); 自定操纵器 1,在Action文档夹删掉原先的默认设置操纵器 2,创建2个文档夹,各自为前台接待和后台管理如Index Admin 浏览: /Index /Admin 自定配备文档(相互之间不可以浏览,但公共性配备能够相互之间浏览) 1,在host/App/Conf/创建2个文档夹,各自为前台接待和后台管理如Index Admin 配备: 前台接待host/App/Conf/ 后台管理host/App/Conf/ 自定涵数 1,在host/App/Common/创建2个文档夹,各自为前台接待和后台管理如Index Admin 配备: 前台接待host/App/Common/ 后台管理host/App/Common/ 留意:排序运用不兼容{:U( form_save )}立即应用,即当今操纵器当今方式,那样写: {:U( /Index/Index/form_save )} *排序运用[结束] **单独排序配备 打开: 1,先配备运用排序 2,加上主要参数 APP_GROUP_MODE = 1, //打开单独排序 APP_GROUP_PATH = Modules , //默认设置排序相对路径,默认设置:Modules 常见相对路径自变量:__ROOT__. / .APP_NAME. / .C( APP_GROUP_PATH ). / .GROUP_NAME. / 新的文件目录构造: ThinkPHP //系统软件文件目录 App //新项目文件目录 Public //静态数据文档文件目录 index.php //全部新项目的通道文档 App: Modules //新项目控制模块 == Admin/Action,Tpl,Model,Conf,Common; Index/Action,Tpl,Model,Conf,Common; Common //公共性Common Conf //公共性Conf Lib //公共性Lib Tpl //公共性Tpl Runtimes //运作时 Public: css js img **JQuery 多线程递交 $( #send-btn ).click( function(){ var username=$( input[username=username] ); var password=$( input[password=password] ); if(username.val()== ){ alert( 客户名不可以为空 ); username.focus(); //让客户名获得聚焦点 return; } if(password.val()== ){ alert( 登陆密码不可以为空 ); password.focus(); //让客户名获得聚焦点 return; } //刚开始多线程传送(要在模版内才能够分析php,不能以在独立js文档实际操作) var sendUrl='{:U( Index/Index/form_save , , )}'; $.post(sendUrl,{username:username.val(),password:password.val()},function(data){}, json ); } ); **php多线程表格解决: Public function form_save(){ //var_dump($this- isAjax()); //分辨是不是了解据递交 //var_dump(IS_AJAX); //[新版本本]分辨是不是了解据递交 if(!$this- isAjax()) halt ( 网页页面不会有 ); $data=jzxy/201410/array( username = $this- _post( username ), password = $this- _post( password ), time = time() ); //p($data); } 11课刚开始没纪录 *引进控制模块 1,认证码控制模块,关键包里沒有,必须手动式加上,放到ThinkPHP/Extend/Library/ORG/Util/Image.class.php import( ORG.Util.Image ); Image::BuildImageVerify(4,5, png ); 浏览:该方式详细地址就可以 换认证码,应用一个JS任意数涵数:Math.random(); 留意:假如出現伪静态数据后缀名名,必须在{:U( Admin/Login/index ), , } 提升两个空主要参数 混和方式区别尺寸写 认证码后台管理认证 if(md5($_POST[code])!= session('verify')){ $this- error('认证码不正确');} if(md5($this- _post[code])!= session('verify')){ $this- error('认证码不正确');} if(I('code','','md5')!= session('verify')){ $this- error('认证码不正确');} 2,分页查询类 import('ORG.Util.Page'); //导进类 $max=M('User')- count(); //查寻总总数 $page=new Page($max,5,'','Index/Index/index/p/'); //案例化目标,主要参数:1总总数,2每张总数,3分页查询自动跳转的主要参数,4设定URL相对路径,在排序时有效,由于少个运用组名 $limit=$page- firstRow.','.$page- listRows; //获得第一页和总页数并设定为limit值 $m=M('User')- order('time DESC')- limit($limit)- select(); //查出来第一页的数据信息 $this- User=$m; //把数据信息分派给前台接待模版,用以foreach解析xml $this- page=$page- show(); //把分页查询內容分派给前台接待模版 模版里分页查询数据信息启用:{$page} **SESSION 储存到数据信息库 1, 配备文档加上: 'SESSION_TYPE'= 'Db',
|