知识大全 php Smarty 模板使用方法详解

Posted 变量

篇首语:弓背霞明剑照霜,秋风走马出咸阳。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 php Smarty 模板使用方法详解相关的知识,希望对你有一定的参考价值。

php Smarty 模板使用方法详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  一 模板中的注释

   每一个Smarty模板文件 都是通过Web前台语言(x 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 + > <* 变量加 *>

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

        <$foo >bar $bar[ ] * $foo >bar * > <* 复合类型变量参加运算 *>

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

    代码如下 复制代码

  <$foo + > <* 变量加 *>

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

        <$foo >bar $bar[ ] * $foo >bar * > <* 复合类型变量参加运算 *>

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

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

    代码如下 复制代码

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

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

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

    

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

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

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

  第 步 加载Smarty模板引擎 如 require libs/Smarty class php

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

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

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

   第 步 用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 pile_id])

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

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

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

       使用方法如下     $smarty >display( tpl/template_dir/template );

   简单实例

   libs 是Smarty类库

          tpl/cache_dir 存放缓存模板

          tpl/pile_dir 存放编译后模板文件

   tpl/config_dir 存放特殊配置文件

   tpl/template_dir 存放模板文件

   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 >pile_dir = SITE_ROOT pile_dir ;//存编译过的模板文件

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

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

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

                   $tpl >cache_lifetime = * * ;//缓存时间 天   

                   $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 >pile_dir = SITE_ROOT pile_dir ;//存编译过的模板文件

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

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

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

                   $tpl >cache_lifetime = * * ;//缓存时间 天   

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

                   $tpl >right_delimiter = > ;//右结束符

   index php文件 首页代码如下

  <?php           

                    require smarty php ;

                   $tpl >assign( title title测试 );

                   $tpl >assign( content content测试 );

                   $tpl >display( template );

    代码如下 复制代码

  <?php           

                    require smarty php ;

                   $tpl >assign( title title测试 );

                   $tpl >assign( content content测试 );

                   $tpl >display( template );

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

  <>               

                   <head>               

                       <meta equiv="Content Type" content="text/; charset=utf " />

                           <title>

                               <$title>

                           </title>

                   </head>

                   <body>

                           <$content>

                   </body>

    </>

    代码如下 复制代码

  <>               

                   <head>               

                       <meta equiv="Content Type" content="text/; charset=utf " />

                           <title>

                               <$title>

                           </title>

                   </head>

                   <body>

                           <$content>

                   </body>

    </>

cha138/Article/program/PHP/201311/21263

相关参考

知识大全 Smarty foreach控制循环次数的实现详解

Smartyforeach控制循环次数的实现详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!在s

知识大全 菜鸟学PHP之Smarty入门(组图)

菜鸟学PHP之Smarty入门(组图)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  刚开始接触

知识大全 PHP中获得$Smarty.capture.name截获的输出

PHP中获得$Smarty.capture.name截获的输出  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来

知识大全 如何在smarty中增加类似foreach的功能自动加载数据

  在smarty中使用自定义插件来加载数据(见编写Smarty插件在模板中直接加载数据的详细介绍)在使用的时候还是感觉不够方便灵机一动就想写成类似foreach那种标签第一步在Smarty_Comp

知识大全 Jquery 模板数据绑定插件的使用方法详解

Jquery模板数据绑定插件的使用方法详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!本篇文章是

知识大全 关于PHP模板技术的基本概念

关于PHP模板技术的基本概念  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!如果你正在设计一个交互式

知识大全 一个PHP模板,主要想体现一下思路

一个PHP模板,主要想体现一下思路  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!思路:欲在速度和易

知识大全 分享25个顶级PHP模板引擎整理

分享25个顶级PHP模板引擎整理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  为了找到一个好的

知识大全 简捷PHP数组赋值方法详解

简捷PHP数组赋值方法详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  PHP数组还是比较常用

知识大全 深入PHP运行环境配置的详解

深入PHP运行环境配置的详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  运行环境配置:php