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 提供了强大的功能来处理数据、格式化输出和调试,有助于提高开发效率和代码质量。