模板引擎(smarty)知识点总结II
今天咱们继续来学习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哈哈~
模板引擎(smarty)知识点总结II的更多相关文章
- PHP的模板引擎smarty原理是什么(整理)
PHP的模板引擎smarty原理是什么(整理) 一.总结 一句话总结:其实所有的模板引擎的工作原理是差不多的,无非就是在php程序里面用正则匹配将模板里面的标签替换为php代码从而将两者混合为一个ph ...
- PHP模板引擎Smarty内建函数section,sectionelse用法详解
本文实例讲述了PHP模板引擎Smarty内建函数section,sectionelse用法.分享给大家供大家参考,具体如下: section 是 Smarty 模板中除了 foreach 以外的另一种 ...
- Php模板引擎Smarty安装和配置
Smarty 是PHP的一个模板引擎,是由Monte Ohrt 和 Andrei Zmievski 使用PHP语言开发的,发展至今已成为一个非常流行的模板引擎,Smarty 提供了一种易于管理和使用的 ...
- php模板引擎smarty
一. smarty的特点 速度:相对于其他模板引擎,速度较快 编译型:在下次访问模板时直接访问编译文件,不再进行模板重新编译 缓存技术:可以将用户最终看到的HTML文件缓存成一个静态HTML 插件技术 ...
- php模板原理PHP模板引擎smarty模板原理浅谈
mvc是开发中的一个伟大的思想,使得开发代码有了更加清晰的层次,让代码分为了三层各施其职.无论是对代码的编写以及后期的阅读和维护,都提供了很大的便利. 我们在php开发中,视图层view是不允许有ph ...
- PHP的模板引擎smarty原理浅谈
mvc是开发中的一个伟大的思想,使得开发代码有了更加清晰的层次,让代码分为了三层各施其职.无论是对代码的编写以及后期的阅读和维护,都提供了很大的便利. 我们在php开发中,视图层view是不允许有ph ...
- Smarty模板引擎技术
Smarty模板引擎技术 什么是模板引擎? 什么是Smarty模板引擎? 为何选择Smarty模板引擎? 如何使用Smarty模板引擎? 一.历史背景 场景一:回顾之前编写PHP项目的方式 //链接数 ...
- 推荐13款javascript模板引擎
javaScript 在生成各种页面内容时如果能结合一些模板技术,可以让逻辑和数据之间更加清晰,本文介绍 X 款 JavaScript 的模板引擎.(排名不分先后顺序) 1. Mustache 基于j ...
- js模板引擎介绍搜集
js模板引擎越来越多的得到应用,如今已经出现了几十种js模板引擎,国内各大互联网公司也都开发了自己的js模板引擎(淘宝的kissy template,腾讯的artTemplate,百度的baiduTe ...
- php的模板引擎
设计一个交互式的网站,我们需要关注两个主要的问题:分别是图形用户界面和业务逻辑.例如,一个标准的web开发小组由两三个美工和三个程序员组成,则设计流程是:美工设计者制作了项目的网站的界面模板,然后把它 ...
随机推荐
- 二、Hadoop学习笔记————架构学习
1.成百上千台服务器组成集群,需要时刻检测服务器是否故障 2.用流读取数据更加高效快速 3.存储节点具有运算功能,省略了服务器之间来回传数据的网络带宽限制 4.一次写入,多次访问,不修改数据 5.多平 ...
- 【转】Nginx反向代理和负载均衡
原文链接:http://www.cnblogs.com/shuoer/p/7820899.html Nginx反向代理和负载均衡 环境说明 由于我使用的是windows系统,所以我用虚拟机虚拟出来了3 ...
- RHCE之配置autofs远程挂载远程服务器的家目录
[root@server0 ~]# yum -y install autofs 安装包 [root@server0 ~]# vim /etc/auto.master ...
- Windows Intellij环境下Gradle的 “Could not determine Java version from ‘9.0.1’”的解决方式
当我导入Gradle项目初试Java spring的时候,遇到下面报错: Gradle complete project refresh failed Error:Could not determin ...
- 【Flink】流-表概念
title: Flink流-表概念 date: 2017-12-12 14:48:16 categories: technique tags: Flink Flink Streaming Dynami ...
- ThinkPHP5.0 实现 app支付宝支付功能
前几天做项目,要求要用到支付宝接口,第一次做,弄了好几天 各种坑啊,简单写一下我做支付宝支付的过程,希望对也是第一次做支付宝支付的童鞋有帮助, 不懂的可以先去支付平台看一下支付宝支付的文档,我是下的d ...
- 关于websorm卡顿的问题
要是电脑不卡的话,使用webstorm真可谓是一种享受,但是随着项目的开展,文件逐渐增大,webstorm自然也会出现卡顿(毕竟缺点就是吃内存),这个时候我们可以增加Xms设置 Start1: 1 找 ...
- NavMesh--导航网格寻路
一.概述: NavMesh是3D游戏世界中用于实现动态物体自动寻路的一种技术,他将游戏场景中复杂的结构组织关系简化为带有一定信息的网格, 进而在这些网格的基础上通过一些列的计算来实现自动寻路. 二.简 ...
- mongoDB之集合操作
mongoDB之集合操作 mongoDB中的集合相当于mysql中的表. mongoDB中集合的创建: 第一种方式:不限制集合大小 db.createCollection("集合名称&q ...
- 我的第一个python web开发框架(18)——前台页面与接口整合
由于我们前后台系统没有分开,所以前台页面调用接口时,可以直接使用后台管理系统已经完成的接口,不过后台管理系统接口的访问加上了登录验证,所以需要将前台要用到的接口进行处理,让它们设置到白名单当中 我们打 ...