zoukankan      html  css  js  c++  java
  • 掌握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/
  • 相关阅读:
    Class.forName和ClassLoader.loadClass的区别
    数据库连接池优化配置(druid,dbcp,c3p0)
    MySQL在默认事务下各SQL语句使用的锁分析
    ArrayList vs LinkedList 空间占用
    MySQL锁详解
    利用ConcurrentHashMap来实现一个ConcurrentHashSet
    list与Set、Map区别及适用场景
    实现一个原子的正整数类:AtomicPositiveInteger
    mysql如何处理亿级数据,第一个阶段——优化SQL语句
    java性能优化
  • 原文地址:https://www.cnblogs.com/zhengfengyun/p/6169288.html
Copyright © 2011-2022 走看看