青风百里

PHP Smarty模板
一.smarty入门案例先说一句,php中的运算符和函数,在smarty中都可以使用,例如:== && || is...
扫描右侧二维码阅读全文
01
2018/10

PHP Smarty模板

一.smarty入门案例

  • 先说一句,php中的运算符和函数,在smarty中都可以使用,例如:== && || isset()
  • controller.php文件
<?php
require "smarty/libs/Smarty.class.php";
$smarty = new Smarty();
$smarty->assign("name", "孙悟空");
$smarty->assign("age", "99");
$smarty->display("view.html");
  • view.html文件
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
姓名:{$name}<br>
年龄:{$age}
</body>
</html>

二.配置

修改左右定界符

  • Smarty->left_delimiter = "<{"
  • Smarty->right_delimiter = "}>"

配置视图目录

  • 关于目录的小知识点

    • “./”或者""(也就是啥也不写):代表目前所在的目录。
    • “../”:代表上一层目录。
    • “/”:代表根目录。
  • 设置视图文件目录 $smarty->setTemplateDir("新目录路径"),当然对应的视图文件也要放到新的目录中
  • 读取视图文件目录 $smarty->getTemplateDir()
<?php
require "./smarty/libs/Smarty.class.php";//也可以使用根目录形式写成require "/Users/pengyunshuai/PHP/smarty/libs/Smarty.class.php";
$smarty = new Smarty();
$smarty->setTemplateDir("./App/Home/View");
$smarty->assign("name", "孙悟空");
$smarty->assign("age", "99");
$smarty->display("./view.html");//也可以写成$smarty->display("view.html");

配置其他目录

  • 编译目录设置:$smarty->setCompileDir()
  • 编译目录读取:$smarty->getCompileDir()
  • 配置目录设置:$smarty->setConfigDir()
  • 配置目录设置:$smarty->getConfigDir()

三.访问变量

访问普通变量

  • 所有PHP的变量,都可以传递到视图文件来使用,但是,在视图中,对象和资源变量用不着,通常数组用的最多
  • view.html文件
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
姓名:{$name}<br>
年龄:{$age}<br>
婚否:{$isMarried}<br>
内容:{$contents[0]},{$contents.1}<!--这里可以使用中括号或者点-->
</body>
</html>
  • controller.php文件
<?php
require "./smarty/libs/Smarty.class.php";
$smarty = new Smarty();
$smarty->assign("name", "孙悟空");//传字符串
$smarty->assign("age", 99);//传整型
$smarty->assign("isMarried", true);//传布尔值
$smarty->assign("contents", ["内容一", "内容二"]);//传数组
$smarty->display("view.html");

访问保留变量

  • 访问页面请求变量
  • 所有的超全局数组变量,都可以在视图文件中直接使用
  • 有很多种:

    • {$smarty.get.参数}对应$_GET数组
    • {$smarty.post.参数}对应$_POST数组
    • {$smarty.request.参数}
    • {$smarty.server.参数}
    • {$smarty.session.参数}
    • {$smarty.cookie.参数}
    • {$smarty.files.参数}
  • 给个例子
  • view.html文件
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
用户名:{$smarty.get.username}<br>
密码:{$smarty.get.password}<br>
域名:{$smarty.server.SERVER_NAME}<br>
客户端IP:{$smarty.server.REMOTE_ADDR}
</body>
</html>
  • controller.php文件
<?php
require "./smarty/libs/Smarty.class.php";
$smartyObj = new Smarty();
$smartyObj->display("view.html");
  • 访问http://localhost:8080/controller.php?username=ceshi&password=123就会得到以下结果

访问预定义常量

  • {$smarty.const.常量名}
  • 看个例子吧
  • view.html文件
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
PHP系统常量(最大整数):{$smarty.const.PHP_INT_MAX}<br>
自定义常量(DB_HOST):{$smarty.const.DB_HOST}<br>
自定义常量(DB_NAME):{$smarty.const.DB_NAME}<br>
</body>
</html>
  • controller.php文件
<?php
require "./smarty/libs/Smarty.class.php";
$smartyObj = new Smarty();
const DB_HOST = "127.0.0.1";
define("DB_NAME", "student");
$smartyObj->display("view.html");

时间戳

  • 看个例子吧
  • view.html文件
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
当前时间戳:{time()}<br>
当前时间戳:{$smarty.now}<br>
格式化时间戳:{$smarty.now|date_format:"Y-m-d H:m:s"}
</body>
</html>
  • controller.php文件
<?php
require "./smarty/libs/Smarty.class.php";
$smartyObj = new Smarty();
const DB_HOST = "127.0.0.1";
define("DB_NAME", "student");
$smartyObj->display("view.html");

四.配置文件变量

定义和读取配置文件

  • 如果有一些简单的变量,就不用程序员参与,前段人员自行定义并使用
  • 设置配置文件的工作目录:$smarty->setConfigDir()
  • 读取配置文件的工作目录: $smarty->getConfigDir()
  • 配置文件的扩展名:.conf 或者.ini
  • 读取:

文件变量的分组

  • 写死
  • 也可以使用地址栏传参

五.foreach循环

foreach快速入门

  • 可以循环所有类型的数组
  • 输出一位数组
  • 输出二维数组
  • 也可以写成

foreach的常用属性

  • @key:输出当前值的索引,可能是整型,也可能是字符
  • @index:当前数组的索引,从0开始计算
  • @iteration:当前循环的次数,从1开始计算
  • @first:当首次循环时,职位true
  • @last:当最后一次循环时,值为true
  • @show:show属性是在{foreach}循环执行之后, 检测循环是否显示数据的判断。 show是一个布尔值。
  • @total:整个循环的次数,可以在foreach内部或者外部使用

六.section循环

  • 与for循环相似
  • 语法{section name=i loop=$arr step= max=} {/section}

    • name:每次循环的索引,相当于$i
    • loop:指定的需要循环的数组
    • start:下标,默认为0
    • step:步长
    • max:最大循环次数

七.if

  • 三种结构
{if 判断}
    //执行
{/if}
{if 判断}
    //执行
{else}
    //执行
{/if}
{if 判断}
    //执行
{elseif 判断}
    //执行
{elseif 判断}
    //执行
{/if}
  • 支持的运算符
  • 案例
  • 表格隔行变色案例
  • 要有数组才能使用smarty语法循环

七.变量调节器

基本语法

  • 就是对变量进行格式化的函数
  • 语法:{$var | 调节器1 :参数1:参数2:参数n| 调节器2 | ...}

    • $var : 要修饰的变量
    • | :分割符各个调节器函数
    • : 分割调节器的各个参数

常用的调节器

  • 有很多,这里写一个
    ![图片上传中(0)...]
Last modification:October 2nd, 2018 at 03:44 pm

Leave a Comment