zoukankan      html  css  js  c++  java
  • ThinkPHP--模版基础

    一.变量输出
    在模版中输出变量是非常容易的,使用assign()方法,以键值对的方式传递变量和值。
    //给模版传递一个变量
    $user='新';
    $this->assign('user',$user);
    在模版中可以这么调用:
    {$user}
    模版编译后的结果是:
    <?phpecho($user);?> //可以在Runtime可以查看
    模版标签{和$之间不能用任何空格,否则无法解析。如果你想更换两个{}可以设置:
    //修改默认标签
    'TMPL_L_DELIM'=>'<{',
    'TMPL_R_DELIM'=>'}>',
    调用方式就必须改变:
    <{$user}>
    如果传递一个数组,我们直接传递过去后,通过两种方式调用:
    //给模版传递一个数组
    $data['user']='新';
    $data['email']='bbs@163.com';
    $this->assign('data',$data);
    调用方式为:
    User:{$data.user}Email:{$data.email}
    User:{$data['user']}Email:{$data['email']}
    如果传递一个对象,我们直接传递过去后,通过两种方式调用:
    //给模版传递一个对象
    $data=newstdClass();
    $data->user='新';
    $data->email='bbs@163.com';
    $this->assign('data',$data);
    调用方式为:
    User:{$data->user}Email:{$data->email}
    User:{$data:user}Email:{$data:email}
    二.系统变量
    在模版中,不但可以输出PHP的系统变量,还可以输出ThinkPHP的系统变量。
    //输出PHP系统变量
    {$Think.server.script_name} //$_SERVER['SCRIPT_NAME']
    {$Think.session.admin} //$_SESSION['admin']
    {$Think.get.user} //$_GET['user']
    {$Think.post.user} //$_POST['user']
    {$Think.request.user} //$_REQUEST['user']
    {$Think.cookie.name} //$_COOKIE['name']
    //ThinkPHP的系统变量
    {$Think.const.APP_PATH} //目录
    {$Think.config.url_model} //URL模式
    {$Think.lang.var_error} //语言变量
    三.使用函数
    如果有时,我们需要在模版中使用PHP函数的话,可以按照下面的格式使用:
    {$user|md5}
    如果有多个参数要传递,可以参考如下设置:
    {$date|date="Y-m-dH:i:s",###}
    PS:表示date函数传入两个参数,每个参数用逗号分割,这里第一个参数是Y-m-d
    H:i:s,第二个参数是前面要输出的date变量,因为该变量是第二个参数,因此需要用###
    标识变量位置,编译后的结果是:
    <?phpecho(date($date,"Y-m-dH:i:s"));?>
    前面输出变量,在后面定义,则不需要###
    {$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'))}
    PS:我个人认为把这些数据处理,都尽可能不要模版端,除非是必须在模版端才能处
    理的。因为模版就是为了HTML和JS,然后就是提供数据,不要包含各种过滤和业务逻辑。
    当传递过来的变量如果没有值的时候,模版提供了默认值输出功能。
    {$user|default='什么都没有!'}
    四.使用运算符
    我们可以在模版中使用运算符,包括对“+”、“-”、“*”、“/”、“%”、“--”和“++”的
    支持。
    {$data['num']+10} //中括号
    {$data['num']+getNum()} //函数
    PS:在使用运算符的时候,不再支持语法和常规的函数用法:
    {$data.num+10} //错误的
    {$data['num']+getNum} //错误
    模版还支持三元运算符:
    {$user?'有值':'无值'}
    五.包含文件
    在一个系统中,可以包含通用的头文件和脚文件:header和footer。由于每个页面
    的头脚都是相同的,所以需要独立分离出来,再用包含文件引入他们。
    我们可以在View目录下default主题目录下创建一个public目录,这个目录专门存
    放公共调用模版文件。
    <includefile='Public/header'/>
    <includefile='Public/footer'/>
    也可以调用绝对路径模式:
    <includefile='./Weibo/Home/View/default/Public/header.tpl'/>
    同时调用多个模版文件:
    <includefile='Public/header,Public/footer'/>
    六.模版注释
    模版支持注释功能,提供个模版制作人员参考。
    {//这是注释}
    {/*这也是注释*/}
    {/*这是
    多行注释*/}
    七.模版继承
    模版继承是一项灵活的模版布局方式,它类似于子类继承父类,然后子类还可以进行适
    当的修改以满足当前页面的需要。
    //基础模版需要子模版修改的部分可以用<block>包含,并且设置name值
    <blockname="main">主要内容</block>
    //子模版只要按同样的方法,修改<block>内部的值即可完成修改
    <blockname="main">修改了</block>
    //创建Public下base.tpl模版基页
    <html>
    <head>
    <metahttp-equiv="Content-Type"content="text/html;charset=utf-8">
    <blockname="title"><title>{$user}</title></block>
    </head>
    <body>
    <includefile="Public/header"/>
    <blockname="main">主要内容</block>
    <includefile="Public/footer"/>
    </body>
    </html>
    //使用<extend>导入模版基页,name为路径,和include导入方法一致
    <extendname="Public/base"/>
    <blockname="main">修改了</block>
    八.模版布局
    ThinkPHP的模版引擎内置了布局模版功能支持,可以方便实现模版布局以及布局嵌套
    功能。有三种布局方式:
    1.全局配置方式
    //开启模版布局功能,并指定基础页
    'LAYOUT_ON'=>true,
    'LAYOUT_NAME'=>'Public/layout', //layout.tpl文件
    //基础页,{__CONTENT__}将被子页面的内容替换
    <includefile="Public/header"/>
    {__CONTENT__}
    <includefile="Public/footer"/>
    //替换变量可以变更为{__REPLACE__}
    'TMPL_LAYOUT_ITEM'=>'{__REPLACE__}',
    //子模版不需要载入模版基页,可以在开头加上{__NOLAYOUT__}
    {__NOLAYOUT__}
    2.模版标签方式
    标签方式,并不需要在系统做任何配置,和模版继承类似,直接引入即可。
    //子模版引入模版基页
    <layoutname="Public/layout"/>
    //替换变量的方法
    <layoutname="Public/layout"replace="{__REPLACE__}"/>
    3.layout控制布局
    这个方法是在控制器里操作的。
    //开启布局,并引入默认地址基页
    publicfunctionindex(){
    layout(true);
    }
    //引入指定基页
    publicfunctionindex(){
    layout('Public/layout');
    //layout(false); //关闭
    }
    九.模版替换
    在模版渲染之前,系统还会对读取的模版内容进行一些特殊字符串替换操作,也就实现
    了模版输出的替换和过滤。
    __ROOT__:会替换成当前网站的地址(不含域名)
    __APP__:会替换成当前应用的URL地址(不含域名)
    __MODULE__:会替换成当前模块的URL地址(不含域名)
    __CONTROLLER__(或者__URL__兼容考虑):会替换成当前控制器的URL地址(不
    含域名)
    __ACTION__:会替换成当前操作的URL地址(不含域名)
    __SELF__:会替换成当前的页面URL
    __PUBLIC__:会被替换成当前网站的公共目录通常是/Public/
    'TMPL_PARSE_STRING' =>array(
    '__PUBLIC__'=>'/Common',//更改默认的/Public替换规则
    '__UPLOAD__'=>'/Uploads',//增加新的上传路径替换规则
    )
    PS:__PUBLIC__可以改成--PUBLIC--同样的也可以。

  • 相关阅读:
    solr和mongodb比较
    IKAnalyzer原理分析
    maven项目java包名的路径问题
    solr的EmbeddedSolrServer原理深入探讨
    团队冲刺第二阶段06
    构建之法读书笔记06——敏捷流程
    团队冲刺第二阶段05
    团队冲刺第二阶段04
    团队冲刺第二阶段03
    团队冲刺第二阶段02
  • 原文地址:https://www.cnblogs.com/panpy/p/8319553.html
Copyright © 2011-2022 走看看