页面重定向
当程序在一个方法里面想跳转另一个方法时候,需要传递数据过去!
$this->redirect([模块名/]控制器名/方法名,['id'=>2]); 第二个参数是传递参数
调用模版 一个控制器 对应一个 模版目录
Index.php ------>项目目录/view/index/XXXX.html
渲染模板输出
return $this->fetch([只有文件名没有后缀])
return view();
use think\view; $view = new view();return $view->fetch();
注意:当fetch方法的值为空的时候代表调用与此控方法名相同模版名 主题
分隔符配置:view_depr => DS
debug调试模式 app_trace 开启调试窗口 app_debug 开启调试模式
配置文件 惯例配置文件 项目目录/thinkphp/convention.php 惯例默认配置,不要在此文件里面修改配置项的值
项目配置文件 项目目录/application/config.php
配置优先级
动态>模块>场景>扩展>项目>核心
//读取模块设置
var_dump(config("name"));
//读取扩展配置
var_dump(config("queue.name"));
var_dump(config("woshikuozhan.name"));
var_dump(config("database.hostname"));
//读取场景配置 场景配置要把config.php里面的app_status设置相应的场景文件
var_dump(config('sex'));
//动态配置
config("name","xx");
var_dump(config('name'));
var_dump(config("?name"));
//第二种读取配置文件的用法 Config::get() //获取值
var_dump(Config::get("name"));
var_dump(Config::has("name")); //判断值是否存在
var_dump(Config::set("name","xiaobai"));//设置配置文件里面变量的值
var_dump(Config::get("name"));
config:: 使用这个类里面的静态方法
?变量 判断配置里面是否有这个变量
has(变量)
Config::get(变量) //读取配置文件里面的这个变量
Config::has(变量) //判断配置文件里面的这个变量是否存在
函数库
系统函数库 helper.php
项目函数库 common.php 项目函数库优先级大于系统函数库
在模块下新建一个common.php 就是模块函数库 先加载项目模块,然后加载系统模块,最后加载模块函数库
控制器之间的跳转
相同控制器下直接 $this->方法名
相同模块不同控制器 $test=controller("控制器名); $test->方法名
不同模块不同控制器 $test=controller("模块名/控制器名") ;$test->方法名
//原始方法
相同模块不同控制器 $test=new 控制器名 ; $test->方法名
不同模块不同控制器 $test=new \app\模块名\controller\控制器名; $test->方法名
当一个控制器跳转到另一个控制器,被跳转的控制器如果有模板会出错
如果想要在原本被跳转的控制器里面可以调取模板,并且在控制器里面跳到这个控制器不会出错
,给控制器设置一个参数,当这个参数不等于1的时候,跳转到模板,等于1,跳转到字符串
view返回值是对象 fetch返回模板
模版和变量的调传递
调用模板时设置第二个参数可以传递参数 ,在模板页面可以输出
或者使用$this->assign("变量名","变量值")也可以传递参数,也可以直接在assign里面直接写一个数组
,函数页面输出建名可以得到键值
设置thinkPHP模版边界符
tpl_begin=''
tpl_end=''
tp5里面的流程结构写法
if
{if condition=" substr($a,0,1)==1"} condition必须写
123
{elseif condition=" substr($a,0,1)==2"}
789
{else/}
456
{/if}
switch
{switch name="a"} //如果$a=1,123,$a=2,456,else999 注释不能写在switch里面,只能写在外面
{case value="1"}123{/case}
{case value="2"}456{/case}
{default/}
999
{/switch}
tp5里面的注释,遵循php的语法注释
{//} {/* */}
临时变量的定义 {assign name="c" value="3"}
模版标签
{eq name="c" value="123"}{/eq} //判断c是否等于value
{neq name="c" value="123"}{/neq} //判断c是否不等于value
{empty name="c"}{/empty} //判断c是否为空 存在赋值为空是空
{present name="c"}{/present} //判断c是否存在
{in name="c" value="1,2,3"}{/in} //判断c在value里面是否存在
{between name="c" value="3,10"}{/between} //判断c在value范围里面是否存在 值为两个
{define name="HOST" value="123"/} //定义一个值为value的常量
tp5里面的循环结构写法
for //当不设置name,默认可以输出$i comparison有两个值,1个是egt大于等于,1个是elt小于等于,step是步长
{for start="1" end="10" step="2" comparison="elt" name="j"}
{$j}
{/for}
当comparison设置为egt 要倒序 ,且step不能省略,一定为负数
{for start="10" end="1" step="2" comparison="egt" name="j"}
{$j}
{/for}
foreach //当不定义的时候$key和$value默认是标识符和元素值,定义之后时效
{foreach name="arr" item="vo" key="k"}
{$vo}
{/foreach}
//另一种循环遍历的方法 id相当于元素值,name是循环数组 ,注意key是循环次数,不是索引,$key默认是索引
offset是数组起始遍历的下标,length是循环数组的长度,empty是当数组长度为空时,执行该语句,mod是用来
取模的,好比如果是4,那么数组中的mod就会自动分成0,1,2,3.0,1,2,3
{volist id="vo" name="brr" mod="4" offset="2" length="5" empty="数组长度为空" key="i"}
{$key}-----{$i}------{$vo.name}----->{$mod}<br>
{if condition=" $mod==3"}
<hr>
{/if}
{/volist}
{defined name="HOST"}{/defined} //判断HOST常量是否存在
{:HOST}{$Thinkshop.const.HOST} //输出HOST常量
{literal}{/literal} //直接输出,不解析
//三元操作符
{$j?1:2} //如果$j存在输出1,不存在输出2
{$n??3} //如果$n存在输出$n,不存在输出3
浙公网安备 33010602011771号