首页 > 代码库 > 一、Smarty安装与调试
一、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 = new Array(‘zh‘, ‘26‘); $arr2 = new 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>
一、Smarty安装与调试