第八章 定制函数

目录
{assign}
{counter}
{cycle}
{debug}
{eval}
{fetch}
{html_checkboxes}
{html_image}
{html_options}
{html_radios}
{html_select_date}
{html_select_time}
{html_table}
{mailto}
{math}
{popup}
{popup_init}
{textformat}

    Smarty带有一些定制函数,可以使用在模板中。

{assign}

    {assign}用来在模板执行过程中给模板变量赋值。

属性名 类型 必需? 缺省 描述
varstringYesn/a 要赋值的变量的名称
valuestringYesn/a 要赋予的值

例子8-1. {assign}

{assign var='name' value='Bob'}

The value of $name is {$name}.

    上例将输出:

The value of $name is Bob.

例子8-2. {assign}和数学运算

    下面这个复杂的例子中,变量必需用反单引号包围:`backticks`

{assign var=running_total value=`$running_total+$some_array[row].some_value`}

例子8-3. 在PHP脚本中存取{assign}变量

    在PHP脚本中访问{assign}变量可以使用get_template_vars()。下面的模板创建了一个变量$foo

{assign var='foo' value='Smarty'}

    模板变量只有在模板执行中或执行后才可用,见如下的脚本演示:

<?php

// 由于脚本还没有运行,所以输出为空
echo $smarty->get_template_vars('foo');

// 将模板调入到一个变量
$whole_page $smarty->fetch('index.tpl');

// 由于模板已经执行,将输出'Smarty'
echo $smarty->get_template_vars('foo');

$smarty->assign('foo','Even smarter');

// 将输出'Even smarter'
echo $smarty->get_template_vars('foo');

?>

    下面这些函数也可以可选地赋值模板变量。

    {capture}{include}{include_php}{insert}{counter}{cycle}{eval}{fetch}{math}{textformat}

    参见assign()get_template_vars()