zoukankan      html  css  js  c++  java
  • smarty模板操作变量

    smarty模板技术分配变量的细节问题。
    从php中获取数据
     
    一句话:可以分配php支持的各种数据类型。
    php: 基本数据类型 int double string bool
              复合数据类型 array object
     
              特殊数据类型  null resourse
     
    调用从PHP分配的变量需在前加"$"符号.(译注:同php一样)
    调用模板内的assign函数分配的变量也是这样.(译注:也是用$加变量名来调用)
     
    Variables loaded from config files 
    从配置文件读取的变量
     
    什么时候考虑用这个:当某个变量值,不希望写死在程序中,就可以通过配置文件来获取。(常见的就是配置样式)
     
    先写一个配置文件(该文件有一个格式)
    key = 值
    比如
    my.conf
    my.ini
     
    title = "这是第一个网站";
    bgcolor = "pink";
     
    然后可以直接使用了
    不需要a$smarty -> assign();这个步骤
    也就是不需要分配
     
    使用方法
    test.tpl
    {config_load file="路径"}//路径可以使用绝对路径或者相对路径
     
    取值:
    {#key值#}
    案例:
    <{config_load file = '../config/my.conf'}>
    <h2><{#title#}></h2>
     
     
    使用{$smarty}获取保留变量
    <{$smarty.get.password}><br />
         <!-- <{$smarty.post.password}>
         <{$smarty.server.SERVER_NAME}> -->
         <{$smarty.server.SERVER_NAME}><br />
     
    ///////附上源文件
    1.TestController.php
     1 <?php
     2 
     3     //创建smarty对象
     4     require_once './libs/Smarty.class.php';
     5 
     6     $smarty = new Smarty;//建立smarty实例对象$smarty
     7     $smarty -> caching = false;//是否使用缓存
     8     $smarty -> template_dir = "./templates";//设置模板目录
     9     $smarty -> compile_dir = "./templates_c";//设置编译目录
    10     $smarty -> cache_dir = "./smarty_cache";//缓存文件夹
    11     //修改左右边界符号
    12     $smarty -> left_delimiter="<{";
    13     $smarty -> right_delimiter="}>";
    14 
    15     /* 获取基本数据类型*/
    16 
    17     $smarty -> assign("aa","hello");//获取字符串
    18     $smarty -> assign("bb",567);//获取整数
    19     $smarty -> assign("cc",56.7);//获取小数
    20     $smarty -> assign("dd",true);//boolean值
    21     $smarty -> assign("ee",false);//boolean值
    22 
    23     /*  复合数据类型  */
    24 
    25     //存放一维数组,数组一般是从数据库中取出
    26     //这里先模拟数据
    27     //1.普通的索引数组
    28     $arr1 = array("北京","上海","杭州");    
    29 
    30     //2.关联数组
    31     $arr2 = array("city1"=>"北京","city2"=>"上海","city3"=>"杭州");    
    32 
    33     //存放二维数组,一般从数据库提取,这里仅仅是模拟
    34     //1.索引二维数组
    35     $arr3 = array(array("北京","上海","杭州"),array("气温","房价","薪水"));
    36     //2。关联二维数组(外面是索引,里面是关联)
    37     $arr4 = array(array('id'=>'a001','email'=>'dada@gmail.com','age'=>25),array('id'=>'a002','email'=>'xixi@gmail.com','age'=>24));
    38 
    39     //3。关联二维数组(外面,里面都是关联)
    40     $arr5 = array('emp1'=>array('id'=>'a001','email'=>'dada@gmail.com','age'=>25),'emp2'=>array('id'=>'a002','email'=>'xixi@gmail.com','age'=>24));
    41 
    42     //4。关联二维数组(外面是关联,里面是索引)
    43     $arr6 = array('emp1'=>array('a001','dada@gmail.com',25),'emp2'=>array('a002','xixi@gmail.com',24));
    44 
    45     $smarty -> assign("ff",$arr1);//
    46     $smarty -> assign("gg",$arr2);//
    47     $smarty -> assign("hh",$arr3);//
    48     $smarty -> assign("ii",$arr4);//
    49     $smarty -> assign("jj",$arr5);//
    50     $smarty -> assign("kk",$arr6);//
    51 
    52     //对象的取法
    53 
    54     class Master{
    55         var $name;
    56         var $address;
    57     }
    58     //实例化
    59     $master = new Master;
    60     $master -> name = "dada";
    61     $master -> address = "海淀区";
    62 
    63 
    64     class Dog{
    65         var $name;
    66         var $age;
    67         var $color;
    68         var $arr;
    69         var $arr2;//二维数组
    70         var $master;
    71         function __construct($name,$age,$color,$arr,$arr2){
    72             $this -> name = $name;
    73             $this -> age = $age;
    74             $this -> color = $color;
    75             $this -> arr = $arr;
    76             $this -> arr2 = $arr2;
    77         }
    78     }
    79 
    80     //实例化一个对象
    81 
    82     $dog1 = new Dog("小马",4,"红色",$arr1,$arr4);
    83     $dog1 -> master = $master;
    84 
    85     $smarty -> assign("ll",$dog1);//
    86 
    87     //希望把get/post/session/server的数据传递给tpl
    88     // 传统
    89     $username = $_GET['username'];
    90     $smarty -> assign("username",$username);
    91     //如果用smarty来写的话,可以直接去tpl页面获取
    92 
    93 
    94     //指定用哪个模版显示
    95     $smarty -> display("test.tpl");//
    96     
    97 ?>

    2.test.tpl

     1 <{config_load file = '../config/my.conf'}>
     2 <!doctype html>
     3 <html lang="en">
     4 <head>
     5     <meta charset="UTF-8">
     6     <title>Document</title>
     7     <style type="text/css">
     8     body{
     9         2background: #ccc;
    10     }
    11     </style>
    12     <link rel="stylesheet" href="css/css_base.css">
    13 </head>
    14 <body bgcolor = '<{#bgcolor#}>'>
    15     <div>***********从配置文件读取的变量*************</div>
    16     <h2><{#title#}></h2>
    17     <h1>获取数据</h1>
    18     <div>***********取出字符串*************</div>
    19     <{$aa}>
    20     <div>***********取出整数*************</div>
    21     <{$bb}>
    22     <div>***********取出小数*************</div>
    23     <{$cc}>
    24     <div>***********boolean值-真*************</div>
    25     <{$dd}>
    26     <div>***********boolean值-假(返回是空的,在php中空本来就代表假的)*************</div>
    27     <{$ee}>
    28     <div>*********** 一维数组(普通的索引数组)*************</div>
    29     <{$ff[0]}>||<{$ff[1]}>||<{$ff[2]}>
    30 
    31     <div>*********** 一维数组(关联数组)***********</div>
    32     <{$gg.city1}>||<{$gg.city2}>||<{$gg.city3}>
    33 
    34     <div>*********** 二维数组(索引数组)***********</div>
    35     <{*  $arr3[0][0]表示取出arr3二维数组的第一个数组元素中的第一个元素  *}>
    36     <{$hh[0][0]}>||<{$hh[1][0]}>||<{$hh[0][2]}>
    37 
    38     <div>*********** 二维数组(关联数组,外面是索引,里面是关联)***********</div>
    39     <{$ii[0].email}>||<{$ii[1].age}>||<{$ii[1].id}>
    40 
    41     <div>*********** 二维数组(关联数组)***********</div>
    42     <{* 关联数组应该用.来操作,索引数组用的是[]操作  *}>
    43 
    44     <{$jj.emp1.email}>||<{$jj.emp1.age}>||<{$jj.emp2.id}>
    45     
    46     <div>*********** 二维数组(关联数组,外面是关联,里面是索引)***********</div>
    47     <{$kk.emp1[0]}>||<{$kk.emp1[1]}>||<{$kk.emp2[0]}>||<{$kk.emp2[1]}>
    48     
    49     <{* 有多层数组嵌套的话,就不断递归处理 *}>
    50 
    51     <div>*********** 取出对象属性的值***********</div>
    52     取出对象普通属性的值:<{$ll -> name}>||<{$ll -> age}>||<{$ll -> color}><br />
    53     取出对象一维数组属性的值:<{$ll -> arr[0]}><br />
    54     取出对象二维数组属性的值:<{$ll -> arr2[0].id}><br />
    55     取出对象的对象属性的值:<{$ll -> master -> name}><br /><br />
    56     <div>***********属性必须是公开的,不然取不出来**************</div>
    57     <div>***********传统方法**************</div>
    58     <{$username}><br />
    59     <div>***********获取保留变量(get获取)**************</div>
    60     <{$smarty.get.password}><br />
    61     <!-- <{$smarty.post.password}>
    62     <{$smarty.server.SERVER_NAME}> -->
    63     <{$smarty.server.SERVER_NAME}><br />
    64     <script src="js/js_base.js"></script>
    65 </body>
    66 </html>

    3.my.conf

    1 title = "这是第一个网站"
    2 bgcolor = "pink"
     
     
     
     
    学透前端行业所有技术,玩遍北京周边所有城市。然后我会回到那个生我养我的地方,因为有亲人的地方才是家。
  • 相关阅读:
    使用phpspider抓取网站文章
    laravel5中使用faker生成模拟数据
    记录一次apache服务器启动报错和解决方法
    记录一次手误删除了root用户的家目录
    Python+selenium+PIL截屏后,裁剪图片不准确(Win10)
    Git学习笔记(五)
    Git学习笔记(一)
    Git学习笔记(四)
    Git学习笔记(三)
    Git学习笔记(二)
  • 原文地址:https://www.cnblogs.com/snowinmay/p/3170092.html
Copyright © 2011-2022 走看看