• 模版基础[1]


    ThinkPHP 内置了一个基于 XML 的性能卓越的模版引擎 ThinkTemplate,

    使用了动态编译和缓存技术,支持自定义标签库。

    一. 变量输出

    在模版中输出变量是非常容易的,使用 assign()方法,以键值对的方式传递变量和值。

    在 Home/controller/UserController.class.php 中输入以下代码:

    1 class UserController extends Controller {
    2         public function index() {
    3             $user='蜡笔小新';
    4             $this->assign('user',$user);//第一个user是传给View/User/index.html中的user
    5             $this->display();
    6         }
    7 }

    然后在 View/User/index.html 中直接调用 {$user} 即可输出user的值。

    模版编译后的结果是: <?php  echo ($user); ?> ,可以的 Runtime/Cache/Home 下查看

    模版标签{和$之间不能用任何空格,否则无法解析。如果你想更换两个{}可以设置:

    在 WeiBo/Common/Conf/config.php 中设置:

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

    这样可以防止与javascript产生冲突。以后调用就是 <{$user}> ,也要注意中间不能有空格。

    如果传递一个数组,我们直接传递过去后,通过两种方式调用:

    在 Home/controller/UserController.class.php 插入以下代码:

    1 class UserController extends Controller {
    2         public function index() {
    3             $data['user']='蜡笔小新';
    4             $data['email']='bnbbs@163.com';
    5             $this->assign('data',$data);
    6             $this->display();
    7         }
    8 }

    然后在 View/User/index.html 中调用方式有两种:

    1 //第一种,直接加dot在中间
    2 {$data.user}
    3 //第二种,使用PHP本来的方法
    4 {$data['email']}

    但其实在  Runtime/Cache/Home  中显示可见,调用的时候,还是会转化为以PHP本来的方式调用的。

    如果传递一个对象,我们直接传递过去后,通过两种方式调用:

    首先在 Home/controller/UserController.class.php 中插入以下代码:

    1 class UserController extends Controller {
    2         public function index() {
    3             $data=new stdClass();
    4             $data->user='蜡笔小新';
    5             $data->email='bnbbs@163.com';
    6             $this->assign('data',$data);
    7             $this->display();
    8         }
    9 }

    然后在 View/User/index.html 中调用方式有两种:

    1 //第一种,用对象的方式调用
    2 {$data->user}
    3 //第二种,直接用冒号的方式
    4 {$data:email}

    但其实在 Runtime/Cache/Home 中显示可见,调用的时候,还是会转化为以对象的方式调用的。

    二.系统变量

    在模版中,不但可以输出 PHP 的系统变量,还可以输出 ThinkPHP 的系统变量。

    在 View/User/index.html 中写入以下代码,则在 Runtime/Cache/Home 会自动编译为相应的php代码:

     1 {$Think.server.script_name}
     2 {$Think.session.admin}
     3 {$Think.get.user}
     4 {$Think.post.user}
     5 {$Think.request.user}
     6 {$Think.cookie.name}
     7 
     8 {$Think.const.APP_PATH}
     9 {$think.config.url_model}
    10 {$Think.lang.var_error}

    在 Runtime/Cache/Home 显示为:

     1 <?php echo ($_SERVER['SCRIPT_NAME']); ?><br>
     2 <?php echo (session('admin')); ?><br>
     3 <?php echo ($_GET['user']); ?><br>
     4 <?php echo ($_POST['user']); ?><br>
     5 <?php echo ($_REQUEST['user']); ?><br>
     6 <?php echo (cookie('name')); ?><br>
     7  
     8 <?php echo (APP_PATH); ?><br>
     9 <?php echo ($think["config"]["url_model"]); ?><br>
    10 <?php echo (L("var_error")); ?><br>

    三. 使用函数

    如果有时,我们需要在模版中使用 PHP 函数的话,可以按照下面的格式使用:

    在 View/User/index.html 中调用:

     {$user|md5} ,这时输出的即为传过来的user并用md5加密

    如果有多个参数要传递,可以参考如下设置:

    1  {$date|date="Y-m-d H:i:s",###} 

    PS:表示 date 函数传入两个参数,每个参数用逗号分割,这里第一个参数是 Y-m-d
    H:i:s,第二个参数是前面要输出的 date 变量,因为该变量是第二个参数,因此需要用###
    标识变量位置,编译后的结果是:

    1 <?php  echo (date($date,"Y-m-d H:i:s")); ?>

    首先在 Home/controller/UserController.class.php 中传入参数:

    class UserController extends Controller {
            public function index() {
                $date=time();
                $this->assign('date',$date);
                $this->display();
            }
    }

    然后在 View/User/index.html 中写入:

    1 {$date|date="Y-m-d H:i:s",###}

    这时在 Runtime/Cache/Home 中显示的代码为:

    1 <?php echo (date("Y-m-d H:i:s",$date)); ?>

    浏览器输出的结果为当前的时间,格式为 Y-m-d H:i:s ,如果在 View/User/index.html 中的代码不加上###,则在 Runtime/Cache/Home 中显示为:

    1 <?php echo (date($date,"Y-m-d H:i:s")); ?>

    这时没有结果输出

    前面输出变量,在后面定义,则不需要###

    1 {$user|mb_substr=0,3,'UTF-8'}

    这时在 Runtime/Cache/Home 中显示为:

    1 <?php echo (mb_substr($user,0,3,'UTF-8')); ?>

    多个函数用"|"隔开即可

    1 {$user|mb_substr=0,3,'UTF-8'|md5|sha1}

    PS:如果你觉得以上写法需要在脑海里二次翻译,太过于麻烦,那么可以用以下的格式写法:

    1 {:md5(mb_substr($user,0,3,'UTF-8'))}

    很类似PHP的写法,就是必须在前面加上":" 

    当传递过来的变量如果没有值的时候,模版提供了默认值输出功能。

    1 {$user|default='什么都没有!'}

    四.使用运算符

    我们可以在模版中使用运算符,包括对“+”、“-”、“*”、“/”、“%”、“--”和“++”的支持。

    在 Home/controller/UserController.class.php 写入以下代码:

    1 class UserController extends Controller {
    2         public function index() {
    3             $data['num']=10;
    4             $this->assign('data',$data);
    5             $this->display();
    6         }
    7 }

    然后在 View/User/index.html 写入调用代码:

    1 {$data['num']+10}

    还有一种是使用function法, Home/controller/UserController.class.php 中的代码不变, View/User/index.html  中写入以下代码:

    1 {$data['num']+getNum()}  //getNum()是调用的函数

    然后在 WeiBo/Common/Common/function.php 中写入以下getNum()的函数

    1 function getNum() {
    2     return 10;
    3 }

    这样返回时 $data['num'] 也是加上10.

    模版还支持三元运算符:

    1 {$data['num']?'有值':'无值'}
  • 相关阅读:
    期望
    更改开机默认操作系统及等待时间修改
    Python排序
    Python IDLE入门 + Python 电子书
    Python基础教程——1基础知识
    Java:谈谈protected访问权限
    三星I9100有时不能收发彩信完美解决!中国移动
    java继承的权限问题
    Python基础教程——2列表和元组
    访问控制和继承(Java)
  • 原文地址:https://www.cnblogs.com/jacson/p/4504242.html
Copyright © 2020-2023  润新知