smarty在普通php页面使用流程

11 篇文章 0 订阅

在文章开始前,我们先简单了解一下为什么要学习smarty?

我们都知道smarty 的应用场景是在本页面解决php与html代码混杂的问题,解决了前段和php程序员的分工,方便以后前段的维修等问题。

为什么还要学习smarty模板?首先现在模板用的非常广泛,工作中,每个项目大多数都用到了框架,每个框架大部分都有自身的应用模板,比如ThinkPHP有自己写的模板think,因为模板原理都相似,所以学习smarty以后,我们在项目开发过程中,再用到框架模板时就不至于那么陌生,况且你又多了种选择(用框架自身模板 或者 smarty模板);其次,就是我们找工作需要;最后,个人追求——体会模板思想,争取自己能写模板。


好,我们回归正题,下面讲讲怎样引用smarty模板!

1:首先,你得有smarty,去官网下载你需要的smarty(下载地址),然后解压到文件夹中

2:引入并实例化smarty,如下:(相对地址,把Smarty.class.php引入到你的php页面上来)

// 引入smarty
require('../smarty3/libs/Smarty.class.php');
// 实例化
$smarty = new Smarty()
3:配置:给smarty指定模板文件和存放编辑完后文件的存放文件夹路径,如下:(前提是两个文件夹都已存在,不存在则创建)

// 配置
$smarty->template_dir = './temp';
$smarty->compile_dir = './comp';

(以上smarty的配置比较麻烦,我们可以新建一个mysmarty.php文件,在里面写一个MySmarty类,用对应继承来统一完成smarty的配置。值得注意的是,在MySmarty里,不能通过直接重写template_dir 和 compile_dir属性来实现配置,因为这2个属性在父类里是私有的,无法重写(即被父类封装了),但可以利用开发的接口,setTemplateDir()和setCompilteDir()来实现。然后在实例化smarty前引进mysmarty.php文件,然后直接实例化MySmarty类就可以了,具体代码如下:

/*
mysmarty.php文件
*/
class MySmarty extends Smarty {
    public function __construct() {
        parent::__construct();

        $this->setTemplateDir('./temp');
        $this->setCompileDir('./comp');
    }
}
require('../Smarty3/libs/Smarty.class.php');
require('./mysmarty.php');
// 实例化
$smarty = new MySmarty();

4:赋值:给标签附上需要的值,模板文件上需要的值直接从已赋值的标签中获取

$title = 'smarty简介';
$content = '赋值操作相关流程';

// 赋值
$smarty->assign('title',$title);
$smarty->assign('content',$content);

// 显示在指定模板
$smarty->display('news.html');
5:模板使用:

<body>
    <h1>{$title}</h1>
    <p>{$content}</p>
 </body>
 


注意:smarty可以标签赋字符串,数字等值,也可以赋给标签一个数组
           在模板里解析数组时,用{$标签.key},或者{$标签[index]}
           当键为字符串时,即关联数组,只能用$标签.key
           当键为数字时,即索引数组时,用$标签[index],或$标签.key

不想记得话,就都使用$标签.key就可以了

// 从数据库取出会员信息,往往是数组形式
$user = array('name'=>'刘备','age'=>'28','weapon'=>'双剑');


$smarty->assign('name',$user['name']);
$smarty->assign('age',$user['age']);
$smarty->assign('weapon',$user['weapon']);

$zf = array('name'=>'张飞','age'=>'25','weapon'=>'丈八蛇矛');
$smarty->assign('zf',$zf);

$gy = array(0=>'关羽',1=>'25','weapon'=>'青龙偃月刀');
$smarty->assign('gy',$gy);

$smarty->display('liubei.html');
模板文件:

<body>
          <table>
            <tr><td>姓名:</td><td>{$name}</td></tr>
            <tr><td>年龄:</td><td>{$age}</td></tr>
            <tr><td>兵器:</td><td>{$weapon}</td></tr>
          </table>
          
          <table>
            <tr><td>姓名:</td><td>{$zf.name}</td></tr>
            <tr><td>年龄:</td><td>{$zf.age}</td></tr>
            <tr><td>兵器:</td><td>{$zf.weapon}</td></tr>
          </table>
          
          <table>
            <tr><td>姓名:</td><td>{$gy[0]}</td></tr>
            <tr><td>年龄:</td><td>{$gy.1}</td></tr>
            <tr><td>兵器:</td><td>{$gy.weapon}</td></tr>
          </table>
     </body>

OK,以上就是引用smarty模板的相关流程,over!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值