视图渲染

默认情况下

视图是有一定的目录规则的。
必须在view目录下,然后index文件夹是对应的Controller控制类,index.html对应的是方法名。
image.png

所以,你如果想访问这个页面的话,直接这样访问即可,只要默认规则对照好,就默认访问的是哪个页面

  1. class Index extends Controller
  2. {
  3. public function index()
  4. {
  5. return view();
  6. }
  7. }

指定页面

按理说 indexPage方法 是对应的 index_page.html 页面。但是这样的话 就指定了是index页面
规则是:[模块@][控制器/][操作] 默认是 html页面

  1. public function indexPage(){
  2. $this->assign('name','ThinkPHP');
  3. return view("index@index/index");
  4. }

参数渲染

方法一:了解

  1. $this->assign('name','ThinkPHP');
  2. return view('index@index/index',['aa'=>$aa,'arr'=>$arr]);

方法二:推荐

  1. $aa = '我就是变量';
  2. $arr = ['id'=>1,'name'=>'张三'];
  3. $code = 'admin';
  4. return view('index@index/index',compact('aa','arr','code'));

方法三:全局赋值方式

  1. 全局赋值
  2. use think\facade\View;
  3. # 赋值全局模板变量
  4. View::share('name','value');
  5. # 或者批量赋值
  6. View::share(['name1'=>'value','name2'=>'value2']);

使用函数

需要对模板输出使用函数进行过滤或其它处理的时候,就可以使用一下函数来解决。

自带的函数

  1. {$password|md5}
  2. 当然也可以写成如下的写法,推荐
  3. {:md5($password)}

使用自定义函数

在common.php中写函数
image.png

  1. // 应用公共文件
  2. // 判断一个函数是否存在
  3. if (!function_exists('webmd5')) {
  4. function webmd5($arg){
  5. return md5(md5($arg));
  6. }
  7. }

原样输出

因thinkphp5的标签语法和js的一致,所以有的时候,可能会使用到它。

  1. {literal}
  2. Hello,{$name}!
  3. {/literal}

循环标签【重点】

  1. # foreach 【推荐写法】
  2. {foreach $list as $key=>$vo }
  3. {$vo.id}:{$vo.name}
  4. {/foreach}
  5. # volist
  6. {volist name="list" id="vo"}
  7. {$vo.id}:{$vo.name} <br/>
  8. {/volist}

条件判断

  1. {if ( $name == 1) OR ( $name > 100) } value1
  2. {elseif $name == 2 /} value2
  3. {else /} value3
  4. {/if}

模板继承

蛮好用的,可以继承,然后可以重写。

模板继承其实并不难理解,就好比类的继承一样,模板也可以定义一个基础模板(或者是布局),并且其中定义相关的区块(block),然后继承(extend)该基础模板的子模板中就可以对基础模板中定义的区块进行重载。
图片17.png

定义一个基础模板图片1.png

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>网站名称</title>
  6. <link rel="stylesheet" href="">
  7. {block name="css"}样式{/block}
  8. </head>
  9. <body>
  10. <h3>大家好</h3>
  11. {block name="content"}内容{/block}
  12. {block name="js"}js{/block}
  13. </body>
  14. </html>

在子模板(其实是当前操作的入口模板)中使用继承

图片2.png
image.png

  1. <!--继承父模板 common/base 是路径 -->
  2. {extend name="common/base" /}
  3. <!--实现占位-->
  4. {block name="css"}{/block}
  5. {block name="content"}
  6. <div>
  7. <p>
  8. 你好世界
  9. </p>
  10. </div>
  11. {/block}
  12. {block name="js"}
  13. <!--继承父占位中的内容-->
  14. {__block__}
  15. <script src=""></script>
  16. {/block}