一、Smarty安装与调试

一、安装
注:这里所使用的Smarty是3.x版本,要求PHP版本为5.2或者更高。
解压下载下来的Smarty压缩文件,将文件夹libs拷到项目中,在项目中引入libs文件夹中的"Smarty.class.php"文件后既可使用。在Smarty内部会自动定义一个名为SMARTY_DIR的常量,该常量默认指向Smarty.class.php所在的绝对路径,可以通过自行设定该值来改变默认值(define('SMARTY_DIR', '/lib/') 注:SMARTY_DIR常量必须以'/'结尾。)。

在正式使用smarty之前,还需要设定几个基本路径:

  • $template_dir 用于存放smarty模版文件,如果未指定该路径,Smarty会自动在当前目录中寻找模版文件。
  • $compile_dir 用于存放smarty编译后的文件,如果不指定该目录,Smarty会自动在当前脚本所在目录下生成一个名为'templates_c'的目录用于存放生成的编译文件。
  • $config_dir 用于存放smarty配置文件
  • $cache_dir 用于存放smarty缓存文件,如果开启Smarty缓存功能,但没有指定该目录,Smarty会自动在当前脚本所在目录下生成一个名为'cache'的目录用于存放缓存文件。
$smarty->template_dir = 'views/';
$smarty->compile_dir = 'lib/smarty/templates_c/';
$smarty->config_dir = 'lib/smarty/configs/';
$smarty->cache_dir = 'lib/smarty/cache/';
//或者
$smarty->setTemplateDir(''views/';');
$smarty->setCompileDir('lib/smarty/templates_c/');
$smarty->setConfigDir('lib/smarty/configs/');
$smarty->setCacheDir('lib/smarty/cache/');

 

 为了不让我们每次使用smarty时都要重新设定这些参数,我们只需要创建一个文件,在这个文件中将这些参数设定,每次使用smarty时只包含这个文件就行了。在这里我创建了一个smarty.inc.php文件,在该文件中代码为:

<?php
        define("ROOT", str_replace("\\","/",dirname(__FILE__)).'/');  //将smarty.inc.php创建于项目根目录下
        require ROOT."/libs/Smarty.class.php";
        
        $smarty = new Smarty();
        $smarty->setCacheDir(ROOT."/showdata/cache")           //设置缓存目录
               ->setConfigDir(ROOT."/showdata/configs")        //设置配置目录
               ->setTemplateDir(ROOT."/showdata/templates")    //设置模板目录
               ->setCompileDir(ROOT."/showdata/templates_c");  //设置编译目录(必选)
        $smarty->setCacheDir(ROOT."/showdata/smarty_cache");   //设置缓存文件夹可减轻压力
        
        $smarty->caching = true;          //开启缓存,建议调试中关闭  默认为关闭False
        $smarty->cache_lifetime = 60;     //设置缓存时间,单位为秒
        
$smarty->auto_literal = false;    //只要Smarty定界符标签‘{’和‘}’内侧包含空格,那么模板将忽略定界符里面内容的解析。可以将$auto_literal变量设置为false取消上述规则
//设置开始结束边界默认为{} 但容易与javascript冲突
$smarty->left_delimiter = "<{"; $smarty->right_delimiter = "}>";

 

配置完成后,可通过Smarty的testInstall()内置方法查看配置信息。

 

二、使用smarty

Smarty配置完成以后,既可通过Smarty调用指定模版,首先在指定模板目录(/showdata/templates)下创建show.tpl模板文件内容如下:

<!DOCTYPE html>
<html>
<head>
   <meta charset="gb2312">
   <title><{$title}></title>
</head>
<body>
   你好,<{$name}>
</body>
</html>

 

 

 

注:模版文件可以是任意后缀名,为了安全 起见,尽量避免使用.html、.php等可以直接被浏览器解析的文件,当然最好的办法是禁止web浏览器直接访问模版所在文件夹。

在根目录下创建文件index.php,代码如下:

<?php
     include 'smarty.inc.php';
     
     $smarty->assign("title","smarty测试");
     $smarty->assign("name","记忆书签");
     $smarty->display("show.tpl");
     
     //$smarty->testInstall();

 

 

 

 

  然后在浏览器中浏览数据,是否smarty安装成功,如图:

 

三,smarty的变量传递与使用

变量的传递与访问

  同时Smarty也可以通过内置方法assign()向模版文件中传递各种变量,如数值、字符串、数组、对象等,
 void assign(string varname, mixed var,  bool nocache);  //将在后面讲到

  $arr1 = Array('zh', '26');
  $arr2 = Array('name'=>'zh', 'age'=>26);
  $obj = new MyObject();//MyObject为自定义类,包含name等公共属性
  $smarty->assign('str', 'zh');//字符串
  $smarty->assign('num', 6);//数值型
  $smarty->assign('arr1', $arr1);//索引数组1
  $smarty->assign('arr2', $arr2);//关联数组2
  $smarty->assign('obj', $obj);//对象 

 

 

模版的调用

 通过Smarty的内置方法display()来打开一个模版文件
 void display(string template, string cache_id, string compile_id); //将在后面讲到

  $smarty->display(show.tpl);

模版中使用变量:

在模版中调用变量,通过在变量之前加上$,并使用'<{}>'边界符将变量括起来,如show.tpl内容如下:

 

  <body>
      {$str} <!-- 输出zh -->
      {$num} <!-- 输出zh -->
      {$arr1[0]} <!-- 输出zh -->
      {$arr2.name} <!-- 输出zh -->
      {$obj->name} <!-- 输出zh -->
  </body>

 

posted @ 2015-01-12 19:29  记忆书签  阅读(2055)  评论(0编辑  收藏  举报