Smarty 变量
在Smarty模板引擎中,变量是用来存储和传递数据的,它们可以是字符串、数字、数组或对象。变量在模板中通过特定的语法进行声明和使用,并且可以在渲染时动态替换为相应的值。
1.变量分配
在 PHP 脚本中,你需要将数据分配给 Smarty 模板。使用 assign 方法将数据传递给模板:
<?php require('./lib/Smarty.class.php'); $smarty = new Smarty; // 分配变量 $smarty->assign('title', 'My Smarty Page'); $smarty->assign('content', 'this is a test page'); $smarty->assign('items', [1, 2, 3, 4, 5]); // 显示模板 $smarty->display('index.tpl'); ?>
2. 在模板中使用变量
在 Smarty 模板文件中,你可以通过 {$variable_name} 语法来访问这些变量。例如:
<!DOCTYPE html> <html> <head> <title>{$title}</title> </head> <body> <h1>{$content}!</h1> <ul> {foreach from=$items item=num} <li>{$num}</li> {/foreach} </ul> </body> </html>
3. 变量类型
Smarty 支持以下几种主要的变量类型:
字符串:
$smarty->assign('message', 'Hello, World!');
在模板中使用:
<p>{$message}</p>
数组
$smarty->assign('colors', ['Red', 'Green', 'Orange']);
在模板中使用:
<ul> {foreach from=$colors item=color} <li>{$color}</li> {/foreach} </ul>
对象
class User { public $name; public $age; function __construct($name, $age) { $this->name = $name; $this->age = $age; } } $user = new User('Jerry', 24); $smarty->assign('user', $user);
在模板中使用:
<p>Name: {$user->name}</p> <p>Age: {$user->age}</p>
4、变量操作
Smarty 允许你对变量进行各种操作:
字符串拼接:
{$first_name} {$last_name}
数学运算:
{$price + 10}
格式化数字
{math equation="x * y" x=3 y=4}
条件判断:
{if $age > 18} <p>Adult</p> {else} <p>n adultNot a</p>
{/if}
5、变量的默认值
你可以为 Smarty 变量设置默认值,以确保在变量未定义的情况下模板不会出错。例如:
<p>{$username|default:"Guest"}</p>
6、全局变量
如果你想在多个模板中使用相同的变量,可以将它们设置为全局变量。全局变量在所有模板中都是可见的。
$smarty->assign('global_variable', 'This is a global variable');
在模板中使用:
<p>{$global_variable}</p>
Smarty 变量使得模板与数据的分离变得简单而有效。通过在 PHP 脚本中定义和分配变量,并在模板中使用这些变量,你可以创建动态、可维护的 web 应用程序。Smarty 提供了强大的功能来处理数据、格式化输出和调试,有助于提高开发效率和代码质量。