smarty标签变量的来源

smarty标签变量,来源于3个部分:

1:是php中assign分配的变量

2:smarty的系统保留变量

3:从配置文件读取到的配置变量

下面具体看看他们的用法:

1:assign赋值

// 3种变量来源之assign赋值
$smarty->assign('name','李白');
$smarty->assign('poem','天生我才必有用');
2:系统保留变量,不用赋值,自动获取

// 3中变量来源之 系统保留变量,不用赋值,自动获取
$smarty->assign('id',$_GET['id']);
define('HEI','这是常量');
3:从配置文件中读取配置变量

      有些数据,比如网站底部的电话信息,不想从数据库中读了,可以写到配置文件里,模板能够读出此配置文件的选项来

     1:配置文件一般以.conf做后缀(如 site.conf)
     2:配置文件的写法是
            选项1=值1
            选项2=值2
     3:配置smarty的config_dir,并把配置文件放在该目录下

// 引入smarty
require('../smarty3/libs/Smarty.class.php');
$smarty = new Smarty();
$smarty->template_dir = './temp';
$smarty->compile_dir = './comp';
$smarty->config_dir = './conf';
site.conf中的变量

site = 广州
hao = xxx科技
tel = 1380013800

下面看看模板文件(html文件)中对三种赋值形式变量的使用


          
          $samrty,开头的标签,当成系统变量来解析
          如$smarty.get.id,解析成
          还有$smarty.post,$smarty.session,$smarty.cookies

          注意:要是想显示一个常量,又该如何? $smarty.const.常量名
          

{$name}

{$poem}

{$id}

{$smarty.get.id}

{$smarty.const.HEI}

{$smarty.config.site}

{literal} 用#好也能读配置文件的值 {#hao#} {/literal}

电话{#tel#}


好了,三种变量来源差不多就是这么个情况!


注:其实smarty也能赋值一个对象

       对象属性的引用:$标签->属性名
       对象方法的使用:$标签->method();

但是!!!!
       我们回想设计模板时的初衷,是为了什么?
       就是为了分离php与html代码,让代码简洁

       所以,模板中的标签,应该尽量的是,只负责变量的输出
       就是负责显示数据的,不要负责太多的逻辑判断,函数调用等

       所以我们不推荐在模板里调用函数和方法

require('../Smarty3/libs/Smarty.class.php');

// 实例化
$smarty = new Smarty();

// 配置
$smarty->template_dir = './temp';
$smarty->compile_dir = './comp';


class human {
    public $name = '张三';
    public $age = '28';

    public function say() {
        return '你好,世界';
    }
}


$man = new human();

$smarty->assign('man',$man);

$smarty->display('01.html');

{$man->name} {$man->age}岁

张三说:{$man->say()}




你可能感兴趣的:(Smarty)