模板引擎(smarty)知识点总结II

时间:2024-01-13 10:33:14

今天咱们继续来学习smarty!!!

知识点1:对于三种变量 常量的引用

有哪三种变量?a.assign赋值 b.系统保留变量(包括:$smarty.get,$smarty.post,$smarty.cookie,$smarty.session,$smarty.file,$smarty.request,$smarty.server,$smarty.env)c.配置文件   一般配置文件以.conf为主

$id = $_GET['id']?(int)$_GET['id']:0;
#要在html页面使用get传来的值,有两种方法
//1.assign()2.$smarty->get.变量名
 <body>
<p>get变量:{$id}</p>
<p>get变量2:{$smarty.get.id}</p> </body>
</html>

post,cookie,session等用法与get一样

配置文件的读取

配置$smarty 的 config_dir目录,并把配置文件放在该目录下
        在模板页面使用 {config_load.config file=配置文件名}
        引用变量的两种方式
        {$smarty.config.选项名}
        {#选项名#}

  require_once('./libs/Smarty.class.php');
$smarty = new Smarty();
$smarty->template_dir = './template';
$smarty->compile_dir = './comiple';
$smarty->config_dir = './config';//设置配置文件存放的位置

  给个配置文件的写法建议:        选项1=值1,选项2=值2如下
                     

site=杨cms系统
icp=蜀icp14689
tel='18483699374'
{config_load file='conf1.conf'}  
<pre>
#####配置文件的读取#####
<pre>
<footer>
<p>{$smarty.config.site}</p>
<p>{#icp#}</p>
<p>{#tel#}</p>

常量的使用
        方案一 同样使用assign
        方案二 {$smarty.const.常量名}

define('NAME','我是主人顶一个常量A');//定义一个常量
<pre>$smarty.conf.NAME</pre>

######################### smarty  assign append 详解 ############################

 $smarty->assign($arr);
/*
通过源码的分析得到:如果只传入一个数组,那么数组会循环赋值,等同于 $smarty->assign('lang','php')$smarty->assign('like','yes')
*/
$smarty->assign('stu','wenhan');
$smarty->assign('stu','yang');
/*
分析得到:当参数一相同的时候,会产生覆盖,后一个覆盖前一个 解决知道 append 追加
*/
$smarty->append('teacher','x老师');
$smarty->append('teacher','y老师');
$smarty->append('teacher','z老师');
/*
分析源码:可以得出:如果 参数一相同 那么 会组建一个数组(
$this->tpl_val['teacher'][] = 'X老师' $this->tpl_val['teacher'][] = 'Y老师' $this->tpl_val['teacher'][] = 'Z老师'

*/
$a = "i\'m a";
$smarty->assign_by_ref('a',$a);//引用传值 $a = &$b ====>了解下 php5以后废除了引用传值

HTML代码:

<!DOCTYPE HTML>
<html>
<head>
<title> smarty assign append 引用传参的解释</title>
<meta name="Generator" content="EditPlus">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head> <body>
<table border='1'>
<tr>
<th>学生</th>
<th>语言</th>
<th>是否喜欢</th>
</tr>
<tr>
<td>{$stu}</td>
<td>{$lang}</td>
<td>{$like}</td>
</tr>
</table>
<p>{$teacher[0]}---{$teacher[1]}---{$teacher[2]}</p>
<!--<p>我是引用传值:{$a}</p>-->
</body>
</html>

今天所讲的 变量常量的使用,很好的说明了smarty灵活性还不错,同时也告诉我们如何引用post get传递的值

append 与 assign 的区别 可能出现在考试题中,这也不奇怪,毕竟smarty是主流的模板引擎,说道这里 后面我会像大家推荐其它的模板引擎以及使用模板引擎的好处与弊端

----------------------------------------------------see youO(∩_∩)O哈哈~