Smarty模板变量详解小结

原创2019-01-15 10:02:51125
摘要:php代码session_start(); //加载Smarty模板引擎类库 require __DIR__ .'/vendor/autoload.php'; //创建Smarty模板引擎对象 $smarty = new Smarty(); //配置目录:必选 $smarty->setTemplateDir(__DIR__

php代码

session_start();
//加载Smarty模板引擎类库
require __DIR__ .'/vendor/autoload.php';

//创建Smarty模板引擎对象
$smarty = new Smarty();

//配置目录:必选
$smarty->setTemplateDir(__DIR__ . '/temp');    //模板目录
$smarty->setConfigDir(__DIR__.'/config');        //配置目录

//1.显示单值变量
$name = '星期8';
$smarty->assign('name',$name);

//2.数组:索引数组
$ks = ['h5', 'css', 'jQ', 'php', 'sql'];
$smarty->assign('ks', $ks);

//3.数组:关联数组
$book = ['name'=>'PHP开发实战','price'=>110, 'address'=>'北京国防部', 'time'=>'2019-12-23'];
$smarty->assign('book', $book);

//4.多维数组
$books = [
    ['name'=>'PHP开发实战','price'=>110, 'address'=>'北京国防部'],
    ['name'=>'SQL性能分析', 'price'=>39, 'address'=>'南京国防部'],
    ['name'=>'JS高级教程', 'price'=>99, 'address'=>'尚京国防部']
];
$smarty->assign('books', $books);

//5. 对象
class Test
{
    public $site = 'PHP中文网';
    public function welcome()
    {
        return '嘿嘿,欢迎来到'.$this->site;
    }
}
$test = new Test;
$smarty->assign('test',$test);

//自定义函数
function cheng($a, $b)
{
    return $a*$b;
}

//常量
const SITE_NAME = 'php中文网';
//常量作用域是全局,不必模板赋值可以直接输出

//系统变量
$_POST['user'] = '超级管理员';
$_GET['page'] = 10;
$_SESSION['pass'] = sha1(123456789);

//不用调用 assign()进行模板赋值,可以直接在模板中输出

$smarty->display('demo1.html');

HTML模板代码

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>demo1</title>
</head>
<body>
{* 变量*}
<h3>我是: {$name}</h3>
<hr>

{* 索引数组 *}
<p>教学课程: {$ks[0]},{$ks[1]},{$ks[2]},{$ks[3]},{$ks[4]}</p>

{* 关联数组 *}
<p>书名:《{$book.name}》,价格:{$book['price']}元,出版地点:{$book.address}</p>

{* 多维数组 *}
{foreach $books as $v}
   <li>书名:《{$v.name}》,价格:{$v['price']}元,出版时间:{$v.address}</li>
{foreachelse}
    没有课程数据
{/foreach}

<hr>

{* 对象成员 *}
<p>我是:{$test->site}, {$test->welcome()}</p>
<hr>


{* 模板中使用表达式 *}
<p>涨价啦~~ {$book['price'] + 500}</p>

{* 模板中使用系统函数 *}
<p>出版时间: {str_replace('-', '/',$book.time)}</p>

{* 模板中可以使用用户自定义函数 *}
<p>新的价格是: {cheng($book.price, 200)}</p>

{* 解析双引号中的变量 *}
<p>普通变量,我的名字: {" $name "}</p>
{* 数组或对象变量要加反引号 *}
<p>复合变量:数组/对象:书名是: {" `$book.name` "}</p>

{* 输出常量 *}
<p>站点名称: {$smarty.const.SITE_NAME}</p>

{* 输出系统变量 *}
<p>POST提交的用户名是: {$smarty.post.user}</p>
<p>GET传入的当前页数是: {$smarty.get.page}</p>
<p>SESSION会话中的密码是: {$smarty.session.pass}</p>
</body>
</html>


批改老师:韦小宝批改时间:2019-01-15 11:58:35
老师总结:写的很棒 注释的特别清楚 学好了模板引擎在来写项目渲染模板的时候就轻松多啦

发布手记

热门词条