zoukankan      html  css  js  c++  java
  • Smarty变量

    先来看一下smarty的注释方法

    然后运行,查看一下源代码

    html和smarty的注释区别就是源代码中能看见html的注释代码,而看不到smarty里面的注释代码

    再来看看,smarty中能读字符串,看看能不能把数组读出来

    php文件中

    <?php
    include("../init.inc.php");
    
    $smarty->assign("ceshi","你好"); //注册变量的方法
    
    $arr = array(1,2,3,4,5);
    
    $smarty->assign("shuzu",$arr);
    
    $smarty->display("test.html");

    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}>
    <{$shuzu[0]}>
    </body>
    </html>

    看一下运行的结果

    把数组成功取出来了

     再来看取关联数组

    php文件

    <?php
    include("../init.inc.php");
    
    $smarty->assign("ceshi","你好"); //注册变量的方法
    
    $arr = array("one"=>"hello","two"=>"world");
    
    $smarty->assign("shuzu",$arr);
    
    $smarty->display("test.html");

    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}>
    <{$shuzu["one"]}>
    </body>
    </html>

    运行一下

    也成功的输出了

    smarty中也支持点语法,如图

    .one也可以成功输出

    取two的值就.two

    取到的值

     再来看看对象支不支持

    <?php
    include("../init.inc.php");
    
    $smarty->assign("ceshi","你好"); //注册变量的方法
    
    class Ren
    {
      public $name="zhangsan";    
    }
    $r=new Ren();
    
    $smarty->assign("r",$r);
    
    $smarty->display("test.html");

    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}>
    
    <{$r->name}>
    
    </body>
    </html>

    运行后

    说明这个变量是支持任何类型的

    有一个标签,可以让里面的内容不参与解析

    运行后

    被原样输出了

    这个标签可以加在js或css外层,为了防止解析出错

    再来试一下,通过配置文件来做元素的样式

    配置文件是写在这个目录下的

     自定义一个文件,censhi   配置文件的后缀都是.conf

    里面随便写两个样式

    然后还是用test.php和test.html  这两个文件来做

    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>
    
    <{config_load file='ceshi.conf'}>   <!--调了一个函数,传了一个参数-->
    <div style="100px; height:100px; background-color:<{#color#}>">
    </div>
    </body>
    </html>

    php文件中

    <?php
    include("../init.inc.php");
    
    $smarty->display("test.html");

    运行后

    在从配置文件中改个颜色试试

    其他两个文件的内容不用动

    运行后

    配置文件中还可以这样写

    相当于把这些样式分了一些类

    来看一下配置文件中有两个color该怎么取

    如果取第二个的话在引入配置文件时后面还需要加上这样一句话

    运行后看看

    取到了two下面的color,为红色

    还可以这样改

    运行后也是红色

    把上面改成one,那么取到的就是绿色

    所以这两种方法都可以用

    {$smarty.const}  取常量

    举个例子来看看

    php文件中

    <?php
    include("../init.inc.php");
    
    define("AA","nihao");
    
    $smarty->display("test.html");

    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>
    
    <{config_load file='ceshi.conf' section='one'}>   <!--调了一个函数,传了一个参数-->
    <div style="100px; height:100px; background-color:<{$smarty.config.color}>">
    </div>
    <{$smarty.const.AA}>
    </body>
    </html>

    看看运行的结果

    取到了AA的值

    所以获取常量的方法就是

    $smarty.const.常量名

    这个运行后

    输出的是右分隔符

    把r换成l试试

    运行后

    输出的是左分隔符

    再看一下取时间怎么取

    php文件中

    <?php
    include("../init.inc.php");
    
    $sj=time();
    $smarty->assign("sj","$sj");
    
    $smarty->display("test.html");

    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>
    
    <{$sj}>
    </body>
    </html>

    先来运行一下

    取到的是时间戳

    php文件不用改变

    html文件中要这样写才能把时间调出来

     运行后

    时间按照代码的格式显示出来

     这是变量调节器,相当于一个函数

    smarty可以支持自定义变量调节器

    在这个目录下有很多函数

     modifier打头的是变量调节器

    function打头的是函数

    block打头的是快函数

    如果要使用自定义变量调节器的话,可以自己新建一个文件

    这个文件就是新建的,要注意格式要对,modifier是打头的,中间是随便给他起的一个名字

    然后在里面写上简单的内容,可以参照它原来有的变量调节器文件来写

    然后php文件中

     html文件中

    运行一下

    mark标签是标记的意思

    如果把html文件中的mark去掉的话

    运行后

    就没有黄色标记了

    调节器文件中,至少有一个参数,多了不限

    这个也可以把当前时间调出来

    还是用原来的文件,把数据都改一下就可以

    php文件不用改

    html文件

    运行后

    当前时间调取成功

  • 相关阅读:
    solr两种启动方式
    Centos7安装Solr
    关于netcore webservice 构建和参数大小控制问题
    百度开源ocr安装(飞浆)
    C# netcore 开发WebService(Soap)
    Aspose.CAD库简介 CAD转换PDF
    .net或JAVAK开发如何实现上传文件夹功能
    【转】TCP和SOCKET关系
    Asp.Net 绑定下拉框的值
    Windwos服务器远程桌面突然不能复制粘贴
  • 原文地址:https://www.cnblogs.com/qishuang/p/6505968.html
Copyright © 2011-2022 走看看