TP5基础——02 模板 && 视图

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lihaoen666/article/details/80694596

基本概念


视图

  1. 决定向模板传入什么数据,以及显示哪个模版。

  2. 视图功能,由\think\View类配合视图驱动类完成。
    文件路径: thinkphp/library/think/View.php

  3. 视图文件根目录,默认在模块的view目录。


模板

  1. 定义如何接收、显示数据。

  2. 呈现html;

  3. 目前的内置模板引擎包括PHP原生模板和Think模板引擎。



调用视图


一、没有继承\think\Controller

view('[控制器:]视图文件的名称,注意不包含.html'[,'模板变量(数组)'])


实例

注意,不一定是本控制器下的视图文件,别的控制器下的也行。

public function hello($name = 'ThinkPHP5')
{
    //return 'hello,' . $name;
    return view('admin:hello');
}



二、继承了\think\Controller

fetch'[模板文件]',[模板变量](关联数组))

虽然fetch方法也可以传递传参到模板文件,但是一般还是使用模板赋值的方法进行参数传递。


模板文件写法

  • 不带任何参数,自动定位对应控制器对应方法视图文件.

      当前模块/view/当前控制器名(小写)/当前操作(小写).html
    
  • [模块@]控制器/方法 可以跨模块操作

  • 完整模板文件名


实例

return $this->fetch('admin@member/edit', ['name' => 'thinkphp']);



模板赋值


基本方法

单个参数传值
assign()    

批量传值
assign([
    'key1'=>'value1',
    'key2'=>'value2',
])


实例

public function index()
{
    // 模板变量赋值
    $this->assign('name','ThinkPHP');
    $this->assign('email','thinkphp@qq.com');
    // 或者批量赋值
    $this->assign([
        'name'  => 'ThinkPHP',
        'email' => 'thinkphp@qq.com'
    ]);
    // 模板输出
    return $this->fetch('index');
}



模板标签

内置的模板引擎,支持普通标签和XML标签两种。


变量

 普通变量:{$变量名称}

 索引数组:{$数组名称[下标]}

 关联数组:{$变量名称[下标]} 或 {$变量名称.下标} 

 对象:{$变量名称:属性名称}



系统变量、系统常量、配置选项

{$Think.系统变量.下标}

{$Think.常量} 或 {$Think.const.常量}

{$Think.config.配置Key}



使用函数


1. 单个参数: {变量 | 函数名称}

如: {$username | strtoupper}


2. 多个参数: {变量 | 函数名称,占位符}

如:
    传入的参数 $str = javascript

    {$str | substr=0,4}

    最终显示java。


3. 三元运算:{变量 ? 值1 : 值2}

如:
    {$sex ? '男' : '女'}


扩展


1. 如果有该变量,输出改变量,否则输出默认值

    {$name ?? '默认值'}    


2. true,输出默认值

    {$name ?= '默认值'} 


3. false,输出默认值

    {$name ?: 'NO'}


4. 表达式为真,输出第一项;否则输出第二项

    {$a==$b ? 'yes' : 'no'}



循环输出标签


foreach循环

{foreach $list as $vo}
    {$vo.id}:{$vo.name}
{/foreach}


volist循环

{volist name='list' id='vo' offset='5' length ='10'}
    {vo.name}
{/volist}

name:要遍历的数组

id: 每个成员的名字

offset:从第几个开始

length:输出几个



判断标签


if标签

{if condition="($name == 1) OR ($name > 100)"}
    value1
{elseif condition="$name eq2"/}
    value2
{else /}
    value3
{/if}


SWITCH标签

{switch name="变量"}
    {case value="值1"}
        内容
    {/case}
    {case value="值2"}
        内容2
    {/case}
    {default /}
    默认情况
{/switch}
阅读更多 登录后自动展开
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页