Chapter 4. 变量

Smarty有多种类型的变量。

在Smarty中的变量可以直接显示,或者作为 函数, 属性 and 修饰器, 内部条件表达式等的参数。 要显示变量,可以简单地用 定界符 把变量括起来。


Example 4.1. 变量例子

  1. {$Name}
  2.  
  3. {$product.part_no} <b>{$product.description}</b>
  4.  
  5. {$Contacts[row].Phone}
  6.  
  7. <body bgcolor="{#bgcolor#}">
  8.  

说明

一个简单的检查Smarty变量的方法是打开Smarty的调试控制台

从PHP赋值的变量

赋值的变量以美元符号 ($) 开头。


Example 4.2. 变量赋值

PHP 代码

  1. <?php
  2.  
  3. $smarty = new Smarty();
  4.  
  5. $smarty->assign('firstname', 'Doug');
  6. $smarty->assign('lastname', 'Evans');
  7. $smarty->assign('meetingPlace', 'New York');
  8.  
  9. $smarty->display('index.tpl');
  10.  
  11. ?>
  12.  

index.tpl模板源码:

  1. Hello {$firstname} {$lastname}, glad to see you can make it.
  2. <br />
  3. {* this will not work as $variables are case sensitive *}
  4. This weeks meeting is in {$meetingplace}.
  5. {* this will work *}
  6. This weeks meeting is in {$meetingPlace}.
  7.  

输出:

  1. Hello Doug Evans, glad to see you can make it.
  2. <br />
  3. This weeks meeting is in .
  4. This weeks meeting is in New York.
  5.  

数组赋值

可以通过点号“.”来使用赋值的数组变量。


Example 4.3. 数组变量

  1. <?php
  2. $smarty->assign('Contacts',
  3. array('fax' => '555-222-9876',
  4. 'email' => 'zaphod@slartibartfast.example.com',
  5. 'phone' => array('home' => '555-444-3333',
  6. 'cell' => '555-111-1234')
  7. )
  8. );
  9. $smarty->display('index.tpl');
  10. ?>
  11.  

index.tpl模板代码:

  1. {$Contacts.fax}<br />
  2. {$Contacts.email}<br />
  3. {* you can print arrays of arrays as well *}
  4. {$Contacts.phone.home}<br />
  5. {$Contacts.phone.cell}<br />
  6.  

输出:

  1. 555-222-9876<br />
  2. zaphod@slartibartfast.example.com<br />
  3. 555-444-3333<br />
  4. 555-111-1234<br />
  5.  

数组下标

你可以通过下标来使用数组,和PHP语法一样。


Example 4.4. 使用数组下标

  1. <?php
  2. $smarty->assign('Contacts', array(
  3. '555-222-9876',
  4. 'zaphod@slartibartfast.example.com',
  5. array('555-444-3333',
  6. '555-111-1234')
  7. ));
  8. $smarty->display('index.tpl');
  9. ?>
  10.  

index.tpl模板代码:

  1. {$Contacts[0]}<br />
  2. {$Contacts[1]}<br />
  3. {* you can print arrays of arrays as well *}
  4. {$Contacts[2][0]}<br />
  5. {$Contacts[2][1]}<br />
  6.  

输出:

  1. 555-222-9876<br />
  2. zaphod@slartibartfast.example.com<br />
  3. 555-444-3333<br />
  4. 555-111-1234<br />
  5.  

对象

从PHP赋值的对象的属性和方法,可以通过->来使用。


Example 4.5. 使用对象

  1. name: {$person->name}<br />
  2. email: {$person->email}<br />
  3.  

输出:

  1. name: Zaphod Beeblebrox<br />
  2. email: zaphod@slartibartfast.example.com<br />
  3.  

原文: https://www.smarty.net/docs/zh_CN/language.variables.tpl