• 掌握Thinkphp3.2.0----模版基础


    我们将要学习一下 ThinkPHP 模版,ThinkPHP 内置了一个基于 XML 的性能
    卓越的模版引擎 ThinkTemplate,使用了动态编译和缓存技术,支持自定义标签库,

    其实我还体会不到其中的强大,慢慢体会吧

    一、变量输出

      1.普通变量

        控制器提供数据

    1 //给模版传递一个变量
    2 $user = '蜡笔小新';
    3 $this->assign('user', $user);

        模版调用

          {$user}----$前边不能有空格,否则不能够正常调用 

    1 //修改默认标签
    2 'TMPL_L_DELIM'=>'<{',
    3 'TMPL_R_DELIM'=>'}>', 

     2.复合变量

        传递的方式是一样的,不同的是调用的方式 

        数组调用方式为:

    1 User:{$data.user} Email:{$data.email}
    2 User:{$data['user']} Email:{$data['email']}

        对象调用方式为:

    1 User:{$data->user} Email:{$data->email}
    2 User:{$data:user} Email:{$data:email}

    二、系统变量----PHP中的内置变量和 ThinkPHP 的系统变量

     1 //输出PHP系统变量
     2 {$Think.server.script_name} //$_SERVER['SCRIPT_NAME']
     3 {$Think.session.admin} //$_SESSION['admin']
     4 {$Think.get.user} //$_GET['user']
     5 {$Think.post.user} //$_POST['user']
     6 {$Think.request.user} //$_REQUEST['user']
     7 {$Think.cookie.name} //$_COOKIE['name']
     8 //ThinkPHP的系统变量
     9 {$Think.const.APP_PATH} //目录
    10 {$Think.config.url_model} //URL模式
    11 {$Think.lang.var_error} //语言变量

    三、使用函数

    能够使用PHP中的内置函数或者TP中函数库中的函数包括自定义的函数,在使用的时候主要是参数的传递问题

    这里说一下在TP中如何使用自定义的函数即扩展函数库

    ThinkPHP扩展函数的三个方法

    1.在Common文件中新建的function.php(不同的版本这个名字可能不一样,可能是function或common) 并把代码写入该文档 然后在indexAction.php中直接写函数名

    然后在indexAction.php中:

    2.临时性加载:在indexAction.php中使用load(‘’);示例:load('@.某函数的文件名'); //只在当前所在的方法中有效 存放函数的.php文件必须在common目录下

    1 <?php
    2       load('@.hanshuu');// 调用common下名为hanshuu.php的扩展函数
    3 ?>


    3.在配置文件中加载:config.php中添加:‘LOAD_EXT_FILE‘ =>'某函数的文件名';

     1 <?php
     2    return array(
     3          'LOAD_EXT_FILE'=>'function', //function为扩展函数所在的php文档名
     4    );
     5 ?>
     6 
     7     然后在IndexAction.php中的调用代码如下
     8 
     9 <?php
    10         hanshuu();
    11 ?>

    注意!:调用扩展函数的存放文件时 仅能使用以上3种扩展函数的方法中其中一种!否则会因为多次重复引用而出现编译报错! 

    如果有时,我们需要在模版中使用 PHP 函数的话,可以按照下面的格式使用:
        {$user|md5}
      如果有多个参数要传递,可以参考如下设置:
        {$date|date="Y-m-d H:i:s",###}
      PS:表示 date 函数传入两个参数,每个参数用逗号分割,这里第一个参数是 Y-m-d
        H:i:s,第二个参数是前面要输出的 date 变量,因为该变量是第二个参数,因此需要用###
        标识变量位置

      前面输出变量,在后面定义,则不需要###
        {$user|mb_substr=0,3,'UTF-8'}
      多个函数用"|"隔开即可
        {$user|mb_substr=0,3,'UTF-8'|md5|sha1}
      PS:如果你觉得以上写法需要在脑海里二次翻译,太过于麻烦,那么可以用以下的格
    式写法:
        {:md5(mb_substr($user,0,3,'UTF-8'))}  

      当传递过来的变量如果没有值的时候,模版提供了默认值输出功能。
        {$user|default='什么都没有!'}

    四.使用运算符
      我们可以在模版中使用运算符,包括对“+” 、 “-” 、 “*” 、 “/” 、 “%” 、 “--”和“++” 的
    支持。
      {$data['num']+10} //中括号
      {$data['num']+getNum()} //函数
    PS:在使用运算符的时候,不再支持 . 语法和常规的函数用法:
      {$data.num+10} //错误的
      {$data['num']+getNum} //错误
    模版还支持三元运算符:
      {$user ? '有值' : '无值'}

    五.包含文件

      这个地方主要是路径的问题

      在一个系统中,可以包含通用的头文件和脚文件:header 和 footer。由于每个页面
        的头脚都是相同的,所以需要独立分离出来,再用包含文件引入他们。
        我们可以在 View 目录下 default 主题目录下创建一个 public 目录, 这个目录专门存
        放公共调用模版文件。

    1 <include file='Public/header' />//注意:没有后缀
    2 <include file='Public/footer' />

      也可以调用绝对路径模式:

    1 <include file='./Weibo/Home/View/default/Public/header.tpl' />

      同时调用多个模版文件:

    1 <include file='Public/header,Public/footer' />

     六.模版注释

    模版支持注释功能,提供个模版制作人员参考。
    {//这是注释}
    {/*这也是注释*/}
    {/*这是
    多行注释*/}

    七. 模版继承

    继承一般的模版内容,修改特殊的模版内容

     1 //基础模版需要子模版修改的部分可以用<block>包含,并且设置name值
     2 <block name="main">主要内容</block>
     3 //子模版只要按同样的方法,修改<block>内部的值即可完成修改
     4 <block name="main">修改了</block>
     5 //创建Public下base.tpl模版基页
     6 <html>
     7 <head>
     8 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     9 <block name="title"><title>{$user}</title></block>
    10 </head>
    11 <body>
    12 <include file="Public/header" />
    13 <block name="main">主要内容</block>
    14 <include file="Public/footer" />
    15 </body>
    16 </html>
    17 //使用<extend>导入模版基页,name为路径,和include导入方法一致
    18 <extend name="Public/base" />
    19 <block name="main">修改了</block>

     八.模版布局

    1.全局配置方式

     1 //开启模版布局功能,并指定基础页
     2 'LAYOUT_ON'=> true,
     3 'LAYOUT_NAME'=>'Public/layout', //layout.tpl 文件
     4 //基础页,{__CONTENT__}将被子页面的内容替换
     5 <include file="Public/header" />
     6 {__CONTENT__}
     7 <include file="Public/footer" />
     8 //替换变量可以变更为{__REPLACE__},默认是{__CONTENT__}
     9 'TMPL_LAYOUT_ITEM' =>'{__REPLACE__}',
    10 //子模版不需要载入模版基页,可以在开头加上{__NOLAYOUT__}
    11 {__NOLAYOUT__}

    2.模版标签方式

    标签方式,并不需要在系统做任何配置,和模版继承类似,直接引入即可。

    1 //子模版引入模版基页
    2 <layout name="Public/layout" />
    3 //替换变量的方法
    4 <layout name="Public/layout" replace="{__REPLACE__}" />

    3.layout 控制布局

    这个方法是在控制器里操作的。

    1 public n function index() {
    2 layout( true);
    3 }
    4 //引入指定基页
    5 c public n function index() {
    6 layout('Public/layout');
    7 //layout( false); //关闭
    8 }

    九.模版替换

    在模版渲染之前, 系统还会对读取的模版内容进行一些特殊字符串替换操作, 也就实现
    了模版输出的替换和过滤。类似于常量

    1 __ROOT__: 会替换成当前网站的地址(不含域名)
    2 __APP__: 会替换成当前应用的 URL 地址 (不含域名)
    3 __MODULE__:会替换成当前模块的 URL 地址 (不含域名)
    4 __CONTROLLER__(或者__URL__ 兼容考虑) : 会替换成当前控制器的 URL 地址(不
    5 含域名)
    6 __ACTION__:会替换成当前操作的 URL 地址 (不含域名)
    7 __SELF__: 会替换成当前的页面 URL
    8 __PUBLIC__:会被替换成当前网站的公共目录 通常是 /Public/
  • 相关阅读:
    为图片指定区域添加链接
    数值取值范围问题
    【leetcode】柱状图中最大的矩形(第二遍)
    【leetcode 33】搜索旋转排序数组(第二遍)
    【Educational Codeforces Round 81 (Rated for Div. 2) C】Obtain The String
    【Educational Codeforces Round 81 (Rated for Div. 2) B】Infinite Prefixes
    【Educational Codeforces Round 81 (Rated for Div. 2) A】Display The Number
    【Codeforces 716B】Complete the Word
    一个简陋的留言板
    HTML,CSS,JavaScript,AJAX,JSP,Servlet,JDBC,Structs,Spring,Hibernate,Xml等概念
  • 原文地址:https://www.cnblogs.com/zhengfengyun/p/6169288.html
Copyright © 2020-2023  润新知