Smarty 注释
Smarty 函数 

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