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文件

    运行后

    当前时间调取成功

  • 相关阅读:
    java编译错误No enclosing instance of type TestFrame is accessible. Must qualify the allocation with an enclosing instance of type TestFrame (e.g. x.new A(
    java 2中创建线程方法
    动态规划基本思想
    关于eclipse编译一个工程多个main函数
    java Gui初识
    Eclipse中java项目的打包
    java 播放声音
    把资源文件夹导入到eclipse中
    Java建立JProgressBar
    How to grant permissions to a custom assembly that is referenced in a report in Reporting Services
  • 原文地址:https://www.cnblogs.com/qishuang/p/6505968.html
Copyright © 2011-2022 走看看