smarty实例教程,在表格里输出多列多行数据的主

作者: 关于计算机  发布:2019-10-03

 代码如下

smarty实例教程(1)
一、什么是smarty?
smarty是二个运用PHP写出来的模板PHP模板引擎,它提供了逻辑与外在内容的分手,一言以蔽之,指标正是要选取PHP程序员同美术工作分
离,使用的技师退换程序的逻辑内容不会潜濡默化到图案的页面设计,美术专业重新修改页面不会影响到程序的程序逻辑,那在四个人搭档的档案的次序
中显的愈发重大。

<table border="1">

二、smarty优点:
1. 速度:选用smarty编写的程序能够拿走最大速度的进步,那一点是相对于其余的模版引擎才具来讲的。

<tr>

2. 编写翻译型:选取smarty编写的顺序在运行时要编写翻译成一个非模板本领的PHP文件,这么些文件选用了PHP与HTML混合的章程,在下二遍访
问模板时将WEB诉求直接转形成那些文件中,而不再进行模板重新编写翻译(在源程序未有改变的气象下) 

<?section name=site loop=$siteList?>

3. 缓存手艺:smarty选择的一种缓存本领,它能够将顾客最后见到的HTML文件缓存成一个静态的HTML页,当设定smarty的cache属性为
true时,在smarty设定的cachetime期内将顾客的WEB央浼直接转变来那几个静态的HTML文件中来,这一定于调用一个静态的HTML文件。

 

4. 插件手艺:smarty可以自定义插件。插件实际正是有个别自定义的函数。

<td><?$siteList[site].url?></td>

5. 模板中得以行使if/elseif/else/endif。在模板文件使用推断语句能够特别有助于的对模板举办格式重排。

 

三、不合乎利用smarty的地点:

<?if $siteListColumn > 1 ?>

1. 索要实时更新的从头到尾的经过。比方像股票显示,它须求平时对数码举行翻新,那类型的主次采取smarty会使模板管理速度变慢。

 

2. 小品种。小品种因为项目轻便而美工与工程师兼于一位的档次,使用smarty会丧失php开拓快速的帮助和益处。

<?if $smarty.section.site.index != 0 && ($smarty.section.site.index + 1) % $siteListColumn == 0 ?>

四、安装smarty类:

</tr>

安装smarty的条件:php版本4.06以上版本。

<tr>

安装smarty方法非常轻松,从
拷入comm目录,达成宗旨安装.

<?/if?>

别的高等设置使用方式请看手册.

 

五、smarty在模板中的使用:

<?else?>

本节经过多少个实例来讲一讲smarty的利用。smarty模板经常使用.tpl来标记,有些人为了美术职业方便,将扩大名直接写成.html,也是足以
的。本文中使用smarty标准写法:以.tpl来代表为一个smarty模板。

</tr>

PHP代码:--------------------------------------------------------------------------------

<tr>

   实例1:

<?/if?>

    先来看贰个简短的例子。
    =====================================================
    index.tpl
    =====================================================

 

    {* 展现是smarty变量识符里的用*带有的文字为注释内容 *}
    {include file="header.tpl"}{*页面头*}
         我们好,小编叫{$name}, 接待我们阅读作者的smarty学习材料。
    {include file="foot.tpl"}{*页面尾*}       

<?/section?>

   上面包车型地铁这些例子是三个tpl模板,在这之中:
   1. {**}是模板页的笺注,它在smarty对模板进行深入分析时不举行其余输出,仅供模板设计员对模板进行注明。
   2. {include file="xxx.tpl"}使用此句将贰个模板文件包蕴到当前页面中,例子中校在网址中公用事的head.tpl与foot.tpl举行了含蓄,你能够
   那样想,使用这一句将xxx.tpl中的内容全方位复制在此时此刻语句处。当然,你不利用这一句也能够,将XXX.tpl中的内容复制到当前语句处
  也是完全能够了。

 

   3.{$name}: 模板变量,smarty中的大旨组成,选取smarty定义的侧边界符{与左臂界符}满含着、以PHP变量方式提交,在smarty程序上将使用
     $smarty->assign("name", "李晓军");将模板中的$name替换到“李晓军”四个字。

</tr>

  整个实例源程序如下:
  =============================
  header.tpl
  =============================
  <html>
    <head>
       <title>大师兄smarty教程</title>
    </head>
  <body>

</table>

  ===============================
  foot.tpl
  ===============================
    <hr>
     <center> CopyRight(C) by 大师兄 2004年8月</center>
    <hr>
    </body>
  </html>

演示中的模板定界符为 <??>

    =====================================================
    index.tpl
    =====================================================

 代码如下

    {* 突显是smarty变量识符里的用*带有的文字为注释内容 *}
    {include file="header.tpl"}{*页面头*}
         大家好,笔者叫{$name}, 应接我们阅读作者的smarty学习材料。
    {include file="foot.tpl"}{*页面尾*}       

<?php

   ================================================
     index.php
   ================================================
   <?php

 

      include_once("./comm/Smarty.class.php"); //包含smarty类文件

// 表达:Smarty 在报表(table)里输出多列多行数据的不二秘籍

      $smarty = new 斯马特y();  //建立smarty实例对象$smarty
      $smarty->templates("./templates"); //设置模板目录
      $smarty->templates_c("./templates_c"); //设置编写翻译目录

 

      //----------------------------------------------------
      //左左侧界符,默以为{},但事实上采取在那之中轻易与Javascript
      //相争辨,所以提出设成<{}>或其余。
      //----------------------------------------------------
      $smarty->left_delimiter = "{"; 
      $smarty->right_delimiter = "}";

// 设置列表内容

      $smarty->assign("name", "李晓军"); //进行模板变量替换

$siteList = array(

      //编写翻译并呈现位于./templates下的index.tpl模板
      $smarty->display("index.tpl"); 
   ?>

array('url'=>''),

   最终施行那几个顺序时将显得为:
   ================================
   执行index.php
   ================================
   <html>
    <head>
       <title>大师兄smarty教程</title>
    </head>
    <body>
     大家好,笔者叫李晓军, 接待我们阅读我的smarty学习材质。
     <hr>
     <center> CopyRight(C) by 大师兄 2004年8月</center>
    <hr>
    </body>
  </html>

array('url'=>''),

smarty实例教程(2)
    这么些例子是汇总应用smarty模板参数的二个事例,这个参数用来决定模板的出口,作者只选中间多少个,其余的参数你去看参考吧。 

array('url'=>''),

    ================================================
      exmple2.tpl
    ================================================
    <html>
      <head><title>大师兄smarty示例2</title></head>
      <body>
        1. 首先句首字母要大写:{$str1|capitalize}<br>
        2. 次之句模板变量 + 李晓军:{$str2|cat:"李晓军"}<br>
        3. 第三句输出当前些天期:{$str3|date_format:"%Y年%m月%d日"}
        4. 第四句.php程序中不处理,它显得暗中认可值:{$str4|default:"未有值!"}
        5。第五句要让它缩进8个空白字母位,并应用"*"取替那8个空白字符:<br>
         {$str5|indent:8:"*"}}<br>
        6. 第六句把TEACHerLI@163.com全数成为小写:{$str6|lower}<br>
        7. 第七句把变量中的teacherli替换到:李晓军:{$str7|replace:"teacherli":"李晓军"}<br>
    8. 第八句为组合使用变量修改器:{$str8|capitalize|cat:"这里是新加的时日:"|date_format:"%Y年%m月%d日"|lower}
      </body>
    </html>

array('url'=>''),

    ===============================================
    example2 .php
    ===============================================
    <?php

array('url'=>''),

      include_once("./Smarty.class.php"); //包含smarty类文件

array('url'=>''),

      $smarty = new Smarty();  //创设smarty实例对象$smarty
      $smarty->templates("./templates"); //设置模板目录
      $smarty->templates_c("./templates_c"); //设置编写翻译目录

array('url'=>''),

      //----------------------------------------------------
      //左侧边界符,默许为{},但其实使用当中轻松与Javascript
      //相争辩,所以建议设成<{}>或别的。
      //----------------------------------------------------
      $smarty->left_delimiter = "{"; 
      $smarty->right_delimiter = "}";

array('url'=>''),

      $smarty->assign("str1", "my name is xiao jun, li."); //将str1替换成My Name Is Xiao Jun, Li.
      $smarty->assign("str2", "作者的名字叫:"); //输出: 小编的名字叫:李晓军
      $smarty->assign("str3", "公元"); //输出公元二零零二年7月二十五日(我的当下光阴)
      //$smarty->assign("str4", ""); //第四句不管理时会显示私下认可值,假设利用后面这一句则替换为""
      $smarty->assign("str5", "前边8个*"); //第五句输出:********前边8个*
      $smarty->assign("str6", "TEACHerLI@163.com"); //这里将出口teacherli@163.com
      $smarty->assign("str7", "this is teacherli"); //在模板中呈现为:this is 李晓军
      $smarty->assign("str8", "HERE IS COMBINING:");

);

      //编写翻译并出示位于./templates下的index.tpl模板
      $smarty->display("example2.tpl"); 
   ?>

 

    最终输出效果:
    ======================================================
    example2.php输出效果:
    ======================================================
    <html>
      <head><title>大师兄smarty示例2</title></head>
      <body>
        1. 先是句首字母要大写:My Name Is Xiao Jun, Li.<br>
        2. 次之句模板变量 + 李晓军:我的名字叫:李晓军<br>
        3. 第三句输出当后日子:公元二〇〇〇年六月七日<br>
        4. 第四句.php程序中不管理,它呈现暗中同意值:未有值!<br>
        5。第五句要让它缩进8个空白字母位,并行使"*"取替那8个空白字符:<br>
         ********前边8个*<br>
        6. 第六句把TEACHerLI@163.com全部产生小写:teacherli@163.com<br>
        7. 第七句把变量中的teacherli替换到:李晓军:this is 李晓军<br>
    8. 第八句为组合使用变量修改器:Here is Combining:这里是新加的日子:二〇〇一年五月11日
      </body>
    </html>

// 列表数据总计

   在模板中的这么些参数被堪称变量修改器(variable modifiers),使用那些参数可对模板进行一多元的修改决定。变量修改器
   使用"|"和调解器名称应用修改器, 使用":"分开修改器参数。变量修改器能够组合使用,像第八句同样,实际应用中得以灵活采纳。

$siteListCount = count($siteList);

   实例3.
   ==================================================
   example3.tpl
   ==================================================
   <html>
    <head><title>模板中钦定的部分函数</title></head>
    <body>

 

        {*上面包车型地铁这一段也便是在模板内部定义贰个变量UserName*}
        {assign var="UserName" value="大师兄"} 
        这里将显得模板内部定义的二个变量:UserName = admin

// 展现列数

        下边包车型地铁这一行将显得3个checkBox:<br>
        {html_checkboxes name="CheckBox" values=$CheckName checked=$IsChecked output=$value separator="<br />"}
        下边在这一行将体现3个radio:<br>
        {html_radioes name="RadioBox" values=$RadioName checked=$IsChecked output=$value separator="<br />"}

$siteListColumn = 3;

                
        上面展现三个月,日, 年选择框:<br>
        {html_select_date}

 

    <hr><b>CopyRight(C) By XiaoJun, Li 二零零四<b>{mailto address="teacherli@163.ccom" text="联系笔者"}

// 假如列表数据不可能将末了一行填满,

    </body>
   </html>

// 如:共 8 条记下,每列 3 条记下,最终一行还差 1 条

  ======================================================
  example3.php
  ======================================================
   <?php

if($siteListColumn > 1 && $siteListCount % $siteListColumn != 0)

  require_once ("./comm/Smarty.class.php");

{

  $smarty = new F117_Smarty;
  $smarty->template_dir = './templates/';
  $smarty->compile_dir  = './templates_c/';
  $smarty->config_dir   = './configs/';
  $smarty->cache_dir    = './cache/';
  $smarty->caching      = false;

// 总结最后一行还差几列

  //--------------------------------------------------------------------------------------
  //处理{html_checkboxes name="CheckBox" values=$CheckName checked=$IsChecked output=$value separator="<br />"}
  //--------------------------------------------------------------------------------------
  $smarty->assign('CheckName', array(
                         1001 => '语文',
                         1002 => '数学',
                         1003 => '外语'));
  $smarty->assign('IsChecked', 1001);

$emptyColumn = $siteListColumn - ($siteListCount % $siteListColumn);

  //--------------------------------------------------------------------------------------
  //处理{html_radioes name="RadioBox" values=$RadioName checked=$IsChecked output=$value separator="<br />"}
  //--------------------------------------------------------------------------------------
  $smarty->assign('RadioName', array(
                         1001 => '语文',
                         1002 => '数学',
                         1003 => '外语'));
  $smarty->assign('IsChecked', 1001);

 

  //--------------------------------------------------------------------------------------
  //{html_select_date}不用管理会自动输出
  //--------------------------------------------------------------------------------------

for($i=0; $i<$emptyColumn; $i++)

  $smarty->display("example3.tpl");
  ?>

{

smarty实例教程(3) 

// 用空值填充,保证最终一行正确显示

  ======================================================
  example3.php输出效果:
  ======================================================
<html>
    <head><title>模板中钦定的有个别函数</title></head>
    <body>

$siteList[$siteListCount + $i] = array('url'=>' ');

        {assign var="UserName" value="大师兄"} 
        这里将显得模板内部定义的一个变量:UserName = 大师兄

}

        上面包车型大巴这一行将展现3个checkBox:<br>
        <input type="checkbox" name="CheckBox[]" value="1000">语文<br />
        <input type="checkbox" name="CheckBox[]" value="1001" checked="checked">数学<br />
        <input type="checkbox" name="CheckBox[]" value="1002">外语<br />
        上面在这一行将显示3个radio:<br>
        <input type="radio" name="RadioBox[]" value="1000">语文<br />
        <input type="radio" name="RadioBox[]" value="1001" checked="checked">数学<br />
        <input type="radio" name="RadioBox[]" value="1002">外语<br />
        上边展现三个月,日, 年甄选框:<br>
        <select name="Date_Month">
         <option label="January" value="01">January</option>
         <option label="February" value="02">February</option>
         <option label="March" value="03">March</option>
         <option label="April" value="04">April</option>
         <option label="May" value="05">May</option>
         <option label="June" value="06">June</option>
         <option label="July" value="07">July</option>
         <option label="August" value="08" selected="selected">August</option>
         <option label="September" value="09">September</option>
         <option label="October" value="10">October</option>
         <option label="November" value="11">November</option>
         <option label="December" value="12">December</option>
      </select>
      <select name="Date_Day">
         <option label="01" value="1">01</option>
         <option label="02" value="2">02</option>
         <option label="03" value="3">03</option>
         <option label="04" value="4">04</option>
         <option label="05" value="5">05</option>
         <option label="06" value="6">06</option>
         <option label="07" value="7">07</option>
         <option label="08" value="8">08</option>
         <option label="09" value="9">09</option>
         <option label="10" value="10">10</option>
         <option label="11" value="11">11</option>
         <option label="12" value="12">12</option>
         <option label="13" value="13">13</option>
         <option label="14" value="14">14</option>
         <option label="15" value="15">15</option>
         <option label="16" value="16">16</option>
         <option label="17" value="17">17</option>
         <option label="18" value="18">18</option>
         <option label="19" value="19">19</option>
         <option label="20" value="20">20</option>
         <option label="21" value="21" selected="selected">21</option>
         <option label="22" value="22">22</option>
         <option label="23" value="23">23</option>
         <option label="24" value="24">24</option>
         <option label="25" value="25">25</option>
         <option label="26" value="26">26</option>
         <option label="27" value="27">27</option>
         <option label="28" value="28">28</option>
         <option label="29" value="29">29</option>
        <option label="30" value="30">30</option>
        <option label="31" value="31">31</option>
     </select>
    <select name="Date_Year">
      <option label="2004" value="2004" selected="selected">2004</option>
    </select>
     <hr><b>CopyRight(C) By XiaoJun, Li 2004<b><a href="mailto:teacherli@163.com">ÁªÏµ×÷Õß</a>
  </body>
 </html>

}

 例3行使了部分smarty模板中放置的一些函数,相似的函数大家能够在手册中查到,使用情势很轻便,大家能够友善去查找.

 

 例4.模板调节(if / elseif / else/ endif )
 =======================================================
 example4.tpl
 =======================================================
 <html>
   <head><title>模板中的流程序调控制</title><head>
   <body>
      <table border="1">
        {assign var="tbColor" value="#D4D0C8"}
    色彩:{$tbColor}<br>

// 将显得列数赋值到模板

    {section name=loop loop=$News}
    {if $tbColor == "#D4D0C8"}
        <tr bgcolor="{$tbColor}">
        {assign var="tbColor" value="#EEEEEE"}
      {else $tbColor == "#EEEEEE"}
        <tr bgcolor = "{$tbColor}">
         {assign var="tbColor" value="#D4D0C8"}
       {/if}
       <td>{$News[loop].newsID}</td>
       <td>{$News[loop].newsTitle}</td>
       <tr>
    {/section}
     </table>
   </body>
 </html>

$smarty->assign('siteListColumn', $siteListColumn);

 =======================================================
  example4.php
 =======================================================
  <?php

 

  require_once ("./public/inc/F117_Smarty.php");

// 将展现数据赋值到模板

  $smarty = new F117_Smarty;
  $smarty->template_dir = './templates/';
  $smarty->compile_dir  = './templates_c/';
  $smarty->config_dir   = './configs/';
  $smarty->cache_dir    = './cache/';
  $smarty->caching      = false;

$smarty->assign('siteList', $siteList);

 $array[]= array("newsID"=>"001", "newsTitle"=>"第1条新闻"); 
 $array[]= array("newsID"=>"002", "newsTitle"=>"第2条新闻");
 $array[]= array("newsID"=>"003", "newsTitle"=>"第3条新闻");
 $array[]= array("newsID"=>"004", "newsTitle"=>"第4条新闻");
 $array[]= array("newsID"=>"005", "newsTitle"=>"第5条新闻");
 $array[]= array("newsID"=>"006", "newsTitle"=>"第6条新闻");
 $array[]= array("newsID"=>"007", "newsTitle"=>"第7条新闻");
 $array[]= array("newsID"=>"008", "newsTitle"=>"第8条新闻");

 

 $smarty->assign("News", $array);

?>

$smarty->display("example4.tpl");
?> 

smarty实例教程(4) 

==================================================

example4.php输出:

  <html>
   <head><title>模板中的流程调控</title><head>
   <body>
      <table border="1">

                <tr bgcolor="#D4D0C8">

             <td>001</td>
       <td>第1条新闻</td>
       </tr>
                <tr bgcolor = "#EEEEEE">

              <td>002</td>
       <td>第2条新闻</td>
       </tr>
                <tr bgcolor="#D4D0C8">

             <td>003</td>
       <td>第3条新闻</td>
       </tr>
                <tr bgcolor = "#EEEEEE">

              <td>004</td>
       <td>第4条新闻</td>
       </tr>
                <tr bgcolor="#D4D0C8">

             <td>005</td>
       <td>第5条新闻</td>
       </tr>
                <tr bgcolor = "#EEEEEE">

              <td>006</td>
       <td>第6条新闻</td>
       </tr>
                <tr bgcolor="#D4D0C8">

             <td>007</td>
       <td>第7条新闻</td>
       </tr>
                <tr bgcolor = "#EEEEEE">

              <td>008</td>
       <td>第8条新闻</td>
       </tr>
         </table>
   </body>
 </html>

  模板文件中动用:
         {if $tbColor == "#D4D0C8"}
        <tr bgcolor="{$tbColor}">
        {assign var="tbColor" value="#EEEEEE"}
      {else $tbColor == "#EEEEEE"}
        <tr bgcolor = "{$tbColor}">
         {assign var="tbColor" value="#D4D0C8"}
       {/if}
  这一语句块举行设置每一行的背景颜色, {assign var="tbColor" value="#D4D0C8"}还记的呢,是例3中设置模板内部变量的定义方法,
        使用模板内置 的流水生产线调整语句有的时候能够大幅程度上提升程序的调整能力,下边叁个事例是phpx.com中曾经有位朋友问过的,笔者将它看作
   实例放在此间供大家学习.

 

  例5: 使用模板内置流程调控语句举办一行多单元格内容输出, 也便是在视觉上smarty每记输出几条记下:
  ================================================
  example5.tpl
  ================================================
  <html>
    <head><title>一行输出多条记下</title></head>
    <body>
       <table>
    <tr>
            {section name=loop loop=$News step=1}    
            {if $smarty.section.loop.index % 4 == 0}
               </tr>   
               <tr>
            {/if}
       <td>{$News[loop].newsID}</td>
       <td>{$News[loop].newsTitle}</td>
         {/section}
       </tr> 
      </table>
    </body>
  </html>

  ====================================================
  example5.php
  ====================================================
<?php

  require_once ("./public/inc/F117_Smarty.php");

  $smarty = new F117_Smarty;
  $smarty->template_dir = './templates/';
  $smarty->compile_dir  = './templates_c/';
  $smarty->config_dir   = './configs/';
  $smarty->cache_dir    = './cache/';
  $smarty->caching      = false;

 $array[]= array("newsID"=>"001", "newsTitle"=>"第1条新闻"); 
 $array[]= array("newsID"=>"002", "newsTitle"=>"第2条新闻");
 $array[]= array("newsID"=>"003", "newsTitle"=>"第3条新闻");
 $array[]= array("newsID"=>"004", "newsTitle"=>"第4条新闻");
 $array[]= array("newsID"=>"005", "newsTitle"=>"第5条新闻");
 $array[]= array("newsID"=>"006", "newsTitle"=>"第6条新闻");
 $array[]= array("newsID"=>"007", "newsTitle"=>"第7条新闻");
 $array[]= array("newsID"=>"008", "newsTitle"=>"第8条新闻");

 $smarty->assign("News", $array);

 $smarty->display("example5.tpl");
 ?>

 ==================================================
 example5.php输出内容:
 ==================================================
   <html>
    <head><title>一行输出多条记下</title></head>
    <body>
       <table>
    <tr>

                           </tr>   
               <tr>
                   <td>001</td>
       <td>第1条新闻</td>

                   <td>002</td>
       <td>第2条新闻</td>

                   <td>003</td>
       <td>第3条新闻</td>

                   <td>004</td>
       <td>第4条新闻</td>

                           </tr>   
               <tr>
                   <td>005</td>
       <td>第5条新闻</td>

                   <td>006</td>
       <td>第6条新闻</td>

                   <td>007</td>
       <td>第7条新闻</td>

                   <td>008</td>
       <td>第8条新闻</td>
                </tr> 
      </table>
    </body>
  </html>

     表达:本来还足以优化,使得第一行不出口一个空行的<tr> </tr>,不过读书程序,轻巧为好,先就好像此用了. 在此处说明一(Wissu)下:
         {section name=loop loop=$News step=1}    
            {if $smarty.section.loop.index % 4 == 0}
               </tr>   
               <tr>
            {/if}
       <td>{$News[loop].newsID}</td>
       <td>{$News[loop].newsTitle}</td>
         {/section}

     {section}{/section}指的是二个巡回部分,在下一节会有详细的牵线,我们根本来寻访这一句:
         {if $smarty.section.loop.index % 4 == 0}
     $smarty.section.loop提议$smarty的实例中的section段有三个叫loop的一对, 它有壹特性能叫index, 它的代表方今轮回的索引值,
     从0开首递增, 我们把它%4后与0相相比较,约等于说,假诺当前的索引值是4的倍数,它就输出四个</tr><tr>,不然实行下边包车型客车部分,
     很轻易的就缓慢解决了三个在程序上贯彻起来很费力的事情.

您大概感兴趣的稿子:

  • Smarty模板急忙入门
  • 菜鸟学PHP之Smarty入门
  • Smarty变量调治器失效的消除办法
  • php之Smarty模板使用格局言传身教详解
  • ThinkPHP使用smarty模板引擎的形式
  • 斯马特y局地缓存的三种情势简要介绍
  • smarty模板局地缓存方法应用示例
  • 模板引擎smarty工作规律以及利用示例
  • php smarty模板引擎的6个小技巧
  • smarty获妥帖前url的法子分享
  • smarty模板中拼接字符串的点子
  • smarty半个小时急速上手入门教程

本文由金沙澳门官网送注册58发布于关于计算机,转载请注明出处:smarty实例教程,在表格里输出多列多行数据的主

关键词: