• thinkphp学习3-模板与视图


    1.模板赋值

    如果要在模板中输出变量,必须在在控制器中把变量传递给模板,系统提供了assign方法对模板变量赋值,无论何种变量类型都统一使用assign赋值。

    $this->assign('name',$value);
    // 下面的写法是等效的
    $this->name = $value;

    assign方法必须在display和show方法之前调用系统变量可以通过特殊的标签输出,无需赋值模板变量。

    赋值后,就可以在模板文件中输出变量了,如果使用的是内置模板的话,就可以这样输出: {$name}

    如果要同时输出多个模板变量,可以使用下面的方式:

    $array['name']    =    'thinkphp';
    $array['email']   =    'liu21st@gmail.com';
    $array['phone']   =    '12335678';
    $this->assign($array);

    这样,就可以在模板文件中同时输出name、email和phone三个变量。

     

    2.模板渲染

    渲染模板输出最常用的是使用display方法,调用格式:

       display('[模板文件]'[,'字符编码'][,'输出类型'])

    模板文件的写法支持下面几种:

    // 不带任何参数 自动定位当前操作的模板文件
    $this->display();

    系统按照默认规则自动定位模板文件,其规则是:

    如果当前没有启用模板主题则定位到:当前模块/默认视图目录/当前控制器/当前操作.html,如果有启用模板主题则定位到:当前模块/默认视图目录/当前主题/当前控制器/当前操作.html,通常默认的视图目录是View。


    指定模板输出,如下:

    //调用当前控制器视图目录下的edit.html模板。
    $this->display('edit');


    调用其他控制器视图目录下的模板,如下:

    //调用Member控制器视图目录下的read.html模板
    $this->display('Member:read');

    渲染输出不需要写模板文件的路径和后缀,确切地说,这里面的控制器和操作并不一定需要有实际对应的控制器和操作,只是一个目录名称和文件名称而已,例如,你的项目里面可能根本没有Public控制器,更没有Public控制器的menu操作,但是一样可以使用 $this->display('Public:menu'); 输出这个模板文件。

    调用其他模块下的模板,如下:

    $this->display("Login@Test:edit"); //如果当前模块是Home,表示调用Login模块下Test控制器视图目录下的edit.html模板。

    display方法支持在渲染输出的时候指定输出编码和类型,例如,可以指定编码和类型:

    $this->display('read', 'utf-8', 'text/xml');

    表示输出XML页面类型。编码及类型是通过http响应头中指定的:

    image

    事情总有特例,如果的模板目录是自定义的,或者根本不需要按模块进行分目录存放,直接传入模板文件名即可,例如:

    $this->display('./Template/Public/menu.html');

    这种方式需要指定模板路径和后缀,这里的Template/Public目录是位于当前项目入口文件位置下面。如果是其他的后缀文件,也支持直接输出。

    要注意模板文件位置是相对于项目的入口文件index.php,而不是模板目录。


    3.获取模板地址

    T函数用于生成模板文件名,用法:
        T([资源://][模块@][主题/][控制器/]操作,[视图分层])
    T函数的返回值是一个完整的模板文件名,可以直接用于display和fetch方法进行渲染输出。

    T('Public/menu');// 返回 当前模块/View/Public/menu.html
    T('blue/Public/menu');// 返回 当前模块/View/blue/Public/menu.html
    T('Admin@Public/menu');// 返回 Admin/View/Public/menu.html
    
    
    // 在display方法中直接使用T函数输出模板
    $this->display(T('Admin@Public/menu'));

    5.获取内容

    如果需要获取渲染模板的输出内容而不是直接输出,可以使用fetch方法。

    模板文件的调用方法和display方法完全一样,区别就在于fetch方法渲染后不是直接输出,而是返回渲染后的内容,例如:

    $content = $this->fetch('Member:edit');

    6.渲染内容

    如果你没有定义任何模板文件,或者把模板内容存储到数据库中的话,你就需要使用show方法来渲染输出了,show方法的调用格式:

    show('渲染内容'[,'字符编码'][,'输出类型'])

    可以指定编码和类型: $this->show($content, 'utf-8', 'text/xml');

  • 相关阅读:
    prometheus 基于文件的目标发现
    prometheus rules
    consul kv使用介绍
    prometheus 标签使用
    prometheus 配置容器 cadvisor监控节点
    prometheus 配置介绍
    Ubuntu 13.10 录音有特别大噪音解决办法
    Ubuntu 13.10 解决虚拟机摄像头无法使用问题
    Ubuntu 13.10 安装软件失败后出现的问题——已安装 post-installation 脚本 返回了错误号 1
    Ubuntu 13.04 VirtualBox在工作区中的切换
  • 原文地址:https://www.cnblogs.com/weekend001/p/3976800.html
Copyright © 2020-2023  润新知