smarty模板自定义变量

一、通过smarty方式调用变量调节器

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>

<body>

<!--显示当前时间戳-->
<{$smarty.now}>

<!--调用调节器显示想要的时间格式-->
<{$smarty.now|date_format:"%Y-%m-%d %H-%M-%S"}>

</body>
</html>

分别显示:

  1498791289

   2017-06-30 04-54-49

 格式:变量 |  变量调节器的名称 :参数  (竖线和冒号)

二、通过自定义方式调用变量

为什么要自己写呢?因为调用变量调节器需要自己去手册找到参数,不如自己写好直接调用。

1、写一个时间的变量调节器

(1)在plugin文件夹中新建一个文件:modifier.time.php

<?php
    //用来格式化时间日期
function smarty_modifier_time($str){
    return date("Y-m-d H:i:s",$str);
}
?>

(2)test.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>

<body>

    <!--调用自定义的变量调节器-->
    <{$smarty.now|time}>

</body>
</html>

显示效果:2017-06-30 05:06:53

什么时候用,就可以什么时候直接调取了,不用在找手册了呢

2、做一个截取字符串的变量调节器

(1)modifier.jiequ.php

<?php

function smarty_modifier_jiequ($str,$cd,$sl){
//  第一个参数:是传过来的变量,必须有
//  第二个参数:是截取多长
//  第三个参数:是要代替后面的省略符号

    $str = substr($str,0,$cd);
    return $str.$sl;
}
?>

(2)12.php

<?php
    header("content-type:text/html;charset=utf-8");
    //引入smarty类
require "../init.inc.php";

//数组类型
$arr =array("one"=>"1111","two"=>"2222");

//注册变量
$smarty->assign("ceshi","我叫你好你叫遇见他叫断桥这是真的么"); 

$smarty->assign("haha","12345678901234567890");

$smarty->assign("nnn","abcdefghijklmnopqrstuvwxyz");
//显示
$smarty->display("test.html");
?>

(3) test.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>

<body>

        <{$ceshi|jiequ:"12":"..."}>

        <{$haha|jiequ:"10":"..."}>

        <{$nnn|jiequ:"10":"..."}>

</body>
</html>

分别显示:

	我叫你好...

	123456789012...

	abcdefghijkl...

注意:汉字在php中相当于三个字符;所以当输出为汉字时要注意截取的长度:

 3、做一个与数据库相关的变量调节器(zhangsan------张三)

(1)12.php

<?php
header("content-type:text/html;charset=utf-8");
//先引入DBDA类
require "DBDA.class.php";
//引入smarty类
require "../init.inc.php";

//从订单表中找到用户名uid
$db = new DBDA();
$sql = "select uid from orders";
$arr = $db->query($sql);

//将得到的uid注册
$smarty->assign("one",$arr[0]);

$smarty->display("test.html");
?>

(2)modifier.uername.php

<?php
function smarty_modifier_username($str)
{
    //无法直接调用DBDA类,所以采用最原始的方法
    $sql = "select name from users where uid=‘zhangsan‘";
    $db = new mysqli("localhost","root","","book");
    $result = $db->query($sql);

    $arr = $result->fetch_row();
    return $arr[0];
}
?>

(3) test.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>

<body>

        <{$one[0]|username}>

</body>
</html>

输出汉字:张三

可以做很多这样的自定义的调节器,便于以后调用~~

时间: 2024-12-24 13:19:00

smarty模板自定义变量的相关文章

PHP Smarty 模板 自定义函数function和块函数block

自定义函数 function.yangA.php页面 采用插件形式调用 <?php /*  * 文件名    * function.函数名.php    function.yangA.php  * 声明的函数名规则  * smarty_function_函数名()  smarty_function_yangA  * 参数  * 1.数组 array  * 2.smarty  * 模板使用  * <{yangA content="I am Mr.Yang" color=&qu

PHP Smarty 模板 自定义插件

插件 是按需载入的.当特定的修饰器,函数,资源等被调用的时候插件才会被载入. 插件目录变量 可以是一个路径的字符串或者是包含多个路径的数组. 安装插件的方法 是直接把插件文件放置在这些目录下,Smarty会自动按需使用. 设定插件目录(新建一个myplugins文件夹) D:\wamp\www\test\smarty\libs\plugins\ D:\wamp\www\test\smarty\libs\myplugins\ //定义根目录 define('ROOT', str_replace("

php教程之Smarty模板用法实例

分享下php之Smarty模板的使用方法. 剖析了smarty模板的使用方法,对于学习smarty的朋友有一定的参考价值. 详情如下: 一.模板中的注释每一个Smarty模板文件,都是通过Web前台语言(xhtml,css和javascript等)结合Smarty引擎的语法开发的.用到的web前台开发的语言和原来的完全一样,注释也没有变化.Smarty注释语法是'左结束符变量值*'和'*右结束符变量值',在这两个定界符之间的内容都是注释内容,可以包含一行或多行,并且用户浏览网页查看原代码时不会看

四、smarty模板的自定义函数

smarty模板的自定义函数(这里介绍的是常用) 分为三个种类: 1.  变量调节器 2.  函数 3.  块函数 三个种类插件的用法: 1.  变量调解器的用法, <{$var|myfun:arg1:arg2}> 2.  函数的用法(和使用HTML标记很像) 如, <{myfun color=”red” size=”7” num=”7”}> 在PHP中定义的函数为: $smarty->registerPlugin(“function”,”myfun”,”one”); fun

2016/04/29 smarty模板 1, 初步 目标 : 变量 运算符 表达式 流程控制 函数

① 从配置文件中读取配置: 1,在模板页面加载配置文件 html页面 不是php页面 <{config_load file='fo.conf'}> 2,在需要用到配置的地方加 <{#size#}> 3, 如果配置文件分了块,要取某一块的配置 用到section <{config_load file='aa.conf' section='aa'}> ② 调用变量调节器: | capitalize 单词首字母大写<{$test|capitalize}  cat  连接

Smarty模板变量调节器

Smarty模板变量调节器用法 在smarty里面,怎么修饰文本和变量呢?当然,你可以通过php函数处理文本,然后再通过assign()方法分配到模板,其实smarty提供了变量调节器能够很容易的处理文本,语法方式如下: {$var|modifier1|modifier2|modifier3|…} 说明:1.不管应用了多少个函数,都应该以|来进行分离. 说明:2.参数用":"分开,如: {$str|truncate:40:"..."}//截取字符串长度为40,并以.

PHP 自定义 Smarty 模板引擎类 高洛峰 细说PHP

smarty模板引擎类简单工作原理 利用Smarty 模板引擎类对模板文件中的变量进行编译,编译过程其实就是利用正则表达式翻译成PHP文件.例如 模板文件中{$title} 利用正则表达式找到并替换成  <?php echo $this->vars['title'];?> 自定义 Smarty 模板引擎类 smarty.class.php页面 <?php /*  * 自定义Smarty模板引擎类  */         class Smarty{             priva

Smarty模板中使用get、post、request、cookies、session变量的方法

一.在模板中访问页面请求变量 我 们可以在PHP脚本中,通过超级全局数组$_GET.$_POST.$_REQUEST获取在客户端以不同方法提交给服务器的数据,也可以通 过$_COOKIE或$_SESSION在多个脚本之间跟踪变量,或是通过$_ENV和$_SERVER获取系统环境变量.如果在模板中需要这些数组,可 以调用Smarty对象中的assign()方法分配给模板.但在Smarty模板中,直接就可以通过{$smarty}保留变量访问这些页面请求变量. 在模板中使用的示例如下所示: PHP代码

[smarty] 在smarty模板中使用smarty变量初始化 javascript 变量的问题

// 总结:// 1/ 在smarty 模板文件中,使用从php中assign过来的smarty变量,一定需要使用双引号或单引号来括住smarty变量,如:var title="<!--{$title}-->";// 2/ 如果不使用引号括住,在smarty变量值为字符串的情况下,那么该字符串在javascript中会被作为javascript变量来解释,所以就会产生错误.// 3/ 变量值是数字,那么则不会产生错误// tpl 文件 <script> if(n