您当前的位置: 首页 > 网站编程 > PHP教程 > php Smarty 模板使用方法详解

php Smarty 模板使用方法详解

作者:不详 来源:网络 发布时间: 2014-08-21 21:52 点击:
一、模板中的注释 每一个Smarty模板文件,都是通过Web前台语言(xhtml,css和javascript等)结合Smarty引擎的语法开发的。 用到的web前台开发的语言和原来的完全一样,注释也没有变化 Smarty注释语法是'左结束符变量值*'和'*右结束符变量值',在这两个定界符之间的内容都

php Smarty 模板使用方法详解

  一、模板中的注释

  每一个Smarty模板文件,都是通过Web前台语言(xhtml,css和javascript等)结合Smarty引擎的语法开发的。

  用到的web前台开发的语言和原来的完全一样,注释也没有变化

       Smarty注释语法是'左结束符变量值*'和'*右结束符变量值',在这两个定界符之间的内容都是注释内容,可以包含一行或多行,并且用户浏览网页查看原代码时不会看到注释,它只是模板内在的注释,以下是注释小例子。

     $smarty->left_lelimiter = '<{';

       $smarty->right_delimiter = '}>';

       注释:<{* this a note *}>

  

  

  

  

  

  

  

  

  

  

  
代码如下复制代码


  

  $smarty->left_lelimiter = '<{';

       $smarty->right_delimiter = '}>';

       注释:<{* this a note *}>  

  



  



  二:模板中变量声明

       在Smarty中一切以变量为主,所有的呈现逻辑都让模板自行控制

       有几种不同类型的变量,变量的类型取决于它的前缀是什么符号或者被什么符号包围

       变量可以直接被输出或者作业函数属性和修饰符的参数或者用于内部的条件表达式等

       <{$name}> <{*常规类型变量,需要调用模板内的assign函数分配值*}>

       <{$contacts[row].phone}> <{*数组类型变量,需要调用模板内的assign函数分配值*}>

       <body bgcolor="<{#bgcolor#}>"> <{*从配置文件中读取的变量的值并输出*}>

      如果在Smarty模板中输出从php中分配的变量,需要在变量前面加$符号并用定界符将它括起来,命名方式和php的变量命名方式一样,并且定界标示符号又有点像是php中的<?php ?>(事实上它们确实会被替换成这个)

  三:模板中输出从php分配的变量

      在Smarty模板中经常使用的变量有两种:一是从php中分配的变量;另一种是从配置文件中读取的变量

      注意:模板中只能输出从php中分配的变量,不能在模板中为这些变量重新赋值,变量都是全域的,只要分配一次就可以了,如果分配两次以上的话,变量内容会以最后分配的为主

      Smarty中提供的foreach或section语句用于遍历输出数组中的每个元素,索引数组和关联数组在模板中输出的方式略有不同,索引数组在模板中的访问方式和在php脚本中的引用是一样的,关联数组中元素在模板中指定的方式是使用'.'访问的。

  在模板中访问对象和php脚本中的方式一样,都是通过'->'这个运算符完成的。

  四:Smarty 模板中变量的数学计算

      在模板中变量不能直接赋值,但可以参与数学运算,只要在php脚本中可以执行的数学运算都可以在模板中应用,如下所示:

  <{$foo + 1}> <{* 变量加1 *}>

      <{$foo * $bar}> <{* 两个变量相乘 *}>

      <{$foo->bar - $bar[1] * $foo->bar - 3 * 7}> <{* 复合类型变量参加运算 *}>

      <{if($foo + 2 == 10)}> <{* 数学运算在程序逻辑中应用 *}>

  

  

  

  

  

  

  

  

  

  

  
代码如下复制代码


  

   <{$foo + 1}> <{* 变量加1 *}>

      <{$foo * $bar}> <{* 两个变量相乘 *}>

      <{$foo->bar - $bar[1] * $foo->bar - 3 * 7}> <{* 复合类型变量参加运算 *}>

      <{if($foo + 2 == 10)}> <{* 数学运算在程序逻辑中应用 *}>

  



  



      在Smarty模板中可以识别嵌入在双引号中的变量,但有的变量必须用反引号'`'(此符号和'~'在同一个键上)包住,如下所示:

  

  

  

  

  

  

  

  

  

  

  
代码如下复制代码


  



      <{"test $foo test"}> <{* 双引号中使用变量 *}>

      <{"test `$foo[0]` test"}> <{* 双引号中反引号包住的数组变量 *}>

      <{"test `$foo.bar` test"}> <{* 双引号中反引号包住的对象成员变量 *}>

  



  <{"test $foo test"}> <{* 双引号中使用变量 *}>



      <{"test `$foo[0]` test"}> <{* 双引号中反引号包住的数组变量 *}>

      <{"test `$foo.bar` test"}> <{* 双引号中反引号包住的对象成员变量 *}>

  第1步:加载Smarty模板引擎,如:require 'libs/Smarty.class.php'

  第2步:创建Smarty对象,如:$smarty = new Smarty();

  第3步:修改Smarty默认行为,如:开启缓存、模板的存放路径等

  第4步:将程序中取得的数据通过Smarty对象的assign()方法赋值给模板中相应的变量

  第5步:用Smarty对象的display()方法将模板内容输出

  assign()方法

    这个方法用来给模板中的变量赋值,使用比较容易

     原型:void assign(string varname,mixed var)

     这个方法可以将php所支持的类型数据赋值给模板变量包含数组和对象

     使用方式有如下两种

  //指定一对'名称/数值'

     $smarty->assign('question','你好吗');

     $smarty->assign('answer','不怎么好');

     //指定包含'名称/数值'

     $smarty->assign(array('question' => '你好吗','answer' => '不怎么好'));//这种方式比较少用

  display()方法

     基于Smarty的脚本中必须用到这个方法,而且一个脚本中只能使用一次,它负责获取和显示由Smarty引擎引用的模板

     原型:var display(string template[,string cache_id][,string compile_id])

     参数一:template是必选的,指定一个合法的模板资源的类型和路径

     参数二:cache_id指定一个缓存标识符的名称

     参数三:compile_id在维护一个页面多个缓存时使用

     使用方法如下

     $smarty->display('tpl/template_dir/template.html');

  简单实例

        1、libs:是Smarty类库

        2、tpl/cache_dir:存放缓存模板

        3、tpl/compile_dir:存放编译后模板文件

        4、tpl/config_dir:存放特殊配置文件

        5、tpl/template_dir:存放模板文件

        6、smarty.php文件里 new 出了一个 Smarty类对象,并设定各对象的属性值,如下代码

     <?php

                 require 'libs/Smarty.class.php';//加载Smarty.class.php文件              

                 define('SITE_ROOT','./tpl/');//定义一个常量

                 $tpl = new Smarty();

                 $tpl->template_dir = SITE_ROOT . 'template_dir';//存模板文件  

                 $tpl->compile_dir = SITE_ROOT . 'compile_dir';//存编译过的模板文件

                 $tpl->config_dir = SITE_ROOT . 'config_dir';//存特殊配置文件

                 $tpl->cache_dir = SITE_ROOT . 'cache_dir';//存Smarty缓存文件  

                 $tpl->caching = 1;//启用缓存

                 $tpl->cache_lifetime = 60*60*24;//缓存时间1天  

                 $tpl->left_delimiter = '<{';//左结束符

                 $tpl->right_delimiter = '}>';//右结束符

  

  

  

  

  

  

  

  

  

  

  
代码如下复制代码


  

        <?php

                 require 'libs/Smarty.class.php';//加载Smarty.class.php文件              

                 define('SITE_ROOT','./tpl/');//定义一个常量

                 $tpl = new Smarty();

                 $tpl->template_dir = SITE_ROOT . 'template_dir';//存模板文件  

                 $tpl->compile_dir = SITE_ROOT . 'compile_dir';//存编译过的模板文件

                 $tpl->config_dir = SITE_ROOT . 'config_dir';//存特殊配置文件

                 $tpl->cache_dir = SITE_ROOT . 'cache_dir';//存Smarty缓存文件  

                 $tpl->caching = 1;//启用缓存

                 $tpl->cache_lifetime = 60*60*24;//缓存时间1天  

                 $tpl->left_delimiter = '<{';//左结束符

                 $tpl->right_delimiter = '}>';//右结束符

  



  



  7、index.php文件 首页代码如下

  <?php          

                  require 'smarty.php';

                 $tpl->assign('title','title测试');

                 $tpl->assign('content','content测试');

                 $tpl->display('template.html');

  

  

  

  

  

  

  

  

  

  

  
代码如下复制代码


  

      <?php          

                  require 'smarty.php';

                 $tpl->assign('title','title测试');

                 $tpl->assign('content','content测试');

                 $tpl->display('template.html');

  



  



  8、tpl/template_dir/template.html 这是一个模板文件 代码如下

      <html>              

                 <head>              

                     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

                         <title>

                             <{$title}>

                         </title>

                 </head>

                 <body>

                         <{$content}>

                 </body>

  </html>

  

  

  

  

  

  

  

  

  

  

  
代码如下复制代码


  

        <html>              

                 <head>              

                     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

                         <title>

                             <{$title}>

                         </title>

                 </head>

                 <body>

                         <{$content}>

                 </body>

  </html>

  



  

分享到:
本文"php Smarty 模板使用方法详解"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4