Smarty的使用

显示数组的方式:

 

访问的是.php页面

<?php
require "../init.inc.php";

$arr = array("one"=>"111111111","two"=>"22222222");

$smarty->assign("shuzu",$arr);

$smarty->display("test.html");     

对应模板文件只有html的代码的页面:

</head>

<body>

<{$shuzu["one"]}> </body> </html>

 

 

 

 

显示调用类的对象的方式:

访问的是.php页面

<?php
require "../init.inc.php";

class Ren{
    public $name = "张三";
    
}
$r = new Ren();

$smarty->assign("duixiang",$r);

$smarty->display("test.html"); 

对应只有html代码的模板文件:

</head>

<body>

<{$duixiang->name }> </body> </html>

 

 

 

显示字符串的方式:

.php页面

<?php
require "../init.inc.php";

$smarty->assign("like","单大源");

$smarty->display("test.html");     

模板文件:

</head>

<body>

<{$like }> </body> </html>

 

smarty模板文件从配置文件里面获取数据:

<?php
//smarty前台模版文件除了这种从php后台的页面注册变量之外,前端的html模板文件还可以从配置文件来获取数据。
//配置文件存放的文件夹是project文件夹里面的configs,在configs文件夹里面建一个配置文件。

//先把配置文件加载到当前页面。用一个方法<{config_load  file='test.conf'}>

//在模板文件body里面写入这个方法就可以加载到当前的页面来使用这个配置文件。



<{config_load  file='test.conf'}>   //这句话包括下面那句都是写在.html文件里的body里面的


//如果是从php后台页面来获取变量信息只需要在<{}>定界符里面写$找变量的名称就可以了
//如果是从配置文件里面获取变量信息的话就不用在定界符里面写$找变量的信息
//如果是从配置文件里面获取变量信息的话就写<{#color#}>必须在配置文件里面写两个#号,两个#号中间写配置的名称
//总结:
//访问的时候访问.php页面,在.html文件里面写<{config_load  file='test.conf'}>过来加载配置文件到当前页面。
//然后在project文件夹里面的configs文件夹里面建个配置文件,当在.html文件里面写了<{config_load  file='test.conf'}>
//后就可以使用配置文件里面的信息了。使用方法就是在定界符里面先写两个#号中间写配置的名称。
//所以说smarty的模板可以从两个方面来获取数据信息,一个是从后台页面的php文件里注册后获取。还可以在configs文件夹
//写入配置文件来获取数据。
<div style=" width:200px; height:200px; background-color:<{#color#}>"></div>

test.conf配置文件的页面:

[one]
color=black


[two]
color=pink


//在配置文件里面可以使用方括号[]来划分模块。写上一个模块之后,下面的所有的配置都是属于这个模块的。

写完配置文件后如果想用one模块里面的数据信息的话就在smarty模板文件的.html里面加上section="one"

<body>

<{config_load  file='test.conf' section="one"}>


<div style=" width:200px; height:200px; background-color:<{#color#}>"></div>



</body>

 

变量调节器:

<body>            

<{$smarty.now|date_format:"%Y-%m-%d %H-%M-%S"}>    


</body>

//调用变量调节器的方法:
//首先需要把这个变量找到$smarty.now 再在变量后面加一个竖线,竖线后面写变量调节器的名称。
//也就是$smarty.now这个变量要调用date_format:""这个调节器。传参数方法是在竖线后面的函数名后面写冒号加参数。
//这样就可以格式化显示日期时间了。

 

 

 

自己新建一个变量调节器:

<?php
function  smarty_modifier_riqi($str,){
     return date("Y-m-d H:i:s",$str);


//变量调节器放在了project文件夹里面的plugins插件文件夹里面了,叫做插件。
//可以在project文件夹里面新建一个自己的变量调节器。这个变量调节器是来格式化日期时间的,新建文件的
//开头是以modifier打头的。
//这个变量调节器本质就是一个函数。实际上这个网页里面我们去调用变量调节器,实际上是调用了一个函数。
//这个函数需要一个参数,我们就传了一个参数过去。  实际上这个变量调节器就是一个function函数。
//在这个变量调节器里面也就是在这个函数function里面需要传参数传过来参数后,就可以在这个函数里面进行操作。
//操作完后就把操作完成的变量返回。就可以替换了。



//如果是modifier的话代表变量调节器,如果这个方法是用来做变量调节器的话。第一个参数必定是当前调用变量调节器的
//字符串。
//第一个参数不用自己传。它会自动把竖线前面的要调节的变量当作第一个参数传到这个方法里面来。
//这样就写好了自己的变量调节器了。自己定义了一个日期,用来格式化日期时间的。

}

 

写好了自己的变量调节器后过来直接调用:

<body>


<{$smarty.now|riqi}>



</body>

//写好了自己写的riqi变量调节器后,调用这个变量调节器,会自动过来执行function smarty_modifier_riqi($str,){}
//这个方法,并且把竖线前边这个变量当作参数传进来。然后就会格式化当前的时间戳。格式化完了之后
//返回,显示在.html上
//哪里需要这个riqi变量调节器就可以直接调用,这样就会变得简单。

 

在project文件夹里面的plugins做一个插件midifier.jiequ.php(截取字符串的函数插件):

<?php
function smarty_modifier_jiequ($str,$cd,$sl){
    $str = substr($str,0,$cd);      //substr截取字符串方法第一个参数是写要截取的字符串,第二个是从什么位置开始截,截取多长的长度。
    return $str.$sl;          //截取完了之后还要拼上用户给的省略符。
}

//括号里面传三个参数 第一个是给的字符串第二个是截取的长度(用户传的)第三个是最后是用什么符号来表示省略(用户传)

//变量调节器都可以通过自定义的方式写出来。

.html页面:

<body>


<div style=" width:200px; height:100px;"><{$neirong|jiequ:"100":"..."}></div>
</body>

.php页面:

<?php

require "../init.inc.php";

//配置文件中已经造好了Smarty对象了,所以下面可以直接用对象调用。
$smarty->assign("ceshi","hello");   //调配置文件里面的一个方法。往里面注册个ceshi变量
//ceshi变量这个的值是hello



$smarty->assign("neirong","
舞动奇迹还得给I去我给丢钱我还丢钱我会杨瑞而且还非让我焊缝余高瑞U还不如我IU花蕊vb和我一个让我I
是的尽快发货无诶嘿覅U文化风景未婚夫I我和浮空技能为科技孵化为U开发hiU文化覅U未婚夫客家文化放开我
额外加分hiU文化覅U文化覅U未婚夫客家文化付款文化覅U文化覅U文化覅U文化覅U文化覅U为辅
房间可维护覅还未U符号为U恢复I未婚夫为I一U圆舞曲ie要我退群诶哦有我覅U团工委研发部
额胃口就好覅U未婚夫I为何故覅黄博文尽快发货为U好覅U未婚夫客家文化副科级未婚夫客家文化付款计划为
啊IUDHIQWUEOIQWJEIOQUWEIJQWEIOJi加热io服务如何副科级为河南府i位妇女为u能访问服务
风科技文化覅未婚夫额好无复合物复合物if我ie就覅哦我I人就我ion发克里斯蒂娜快乐在吗哈喽败笔");



$smarty->display("test.html");                 //调用display方法来显示模板文件
//这时候只要在括号内给出模板的路径,模板就可以显示了。

//运用.html 和.php还有自己写的project文件夹里面的plugins做一个插件midifier.jiequ.php(截取字符串的函数插件)三个文件就可以实现。

 

 完全可以自定义一些变量调节器来用:(如果你想对这个变量进行一些改变一些操作的话,你就可以去自定义一些变量调节器来用。)

smarty里面除了可以对字符串进行一些操作之外,还可以对其他东西来操作比如说:

后台读了info表显示了民族代号出来,但我不想显示民族代号想显示民族名称。此时可以自己写一个变量调节器用来去查询民族名称

根据民族代号来查民族名称然后显示在这个位置。

modifier.nationname.php页面:

<?php
function smarty_modifier_nationname($str){
    $db = new mysqli("localhost","root","778899","t_90052");
    $sql = "select name from nation where code='{$str}'";
    $result = $db->query($sql);
    $arr = $result->fetch_row();
    return $arr[0];
}

 

.php页面:

<?php
require "../DBDA.class.php";
require "../init.inc.php";


$db = new DBDA();
$sql = "select * from info";
$arr = $db->query($sql);

$smarty->assign("one",$arr[1]);




//$arr[0]是表示第一条数据   $arr[1]是表示第二条数据 表内横向的数据一整条

$smarty->display("test.html");                 //调用display方法来显示模板文件
//这时候只要在括号内给出模板的路径,模板就可以显示了。

 .html页面:

<body>


<{$one[3]|nationname}>


</body>

//这样就可以从名称代号利用自己写的变量调节器来显示出对应的民族名称了。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2017-08-13 09:58  mengqiaini  阅读(244)  评论(0编辑  收藏  举报