传统来说,应用程序使用模板编程都按这样的方式:
先在PHP程序中,将需要的变量都获取到 (可能还会通过数据库获取),
然后实例化Smarty对象,调用assign()来赋值变量,并且display()。
好的,我们来看看模板上显示股票的例子吧。
我们会在程序中收集到股票的数据,然后将数据变量赋值到模板,并且显示模板。
现在,如果你可以在模板简单地获取到任意来源的股票数据,不需要担心在前端获取这些数据,不是更好吗?
你可以编写一个自定义扩展,来获取内容并且赋值到模板的变量。
Example 21.7. 组件化模板
function.load_ticker.php -
文件在
$plugins 目录
<?php
// setup our function for fetching stock data
function fetch_ticker($symbol)
{
// put logic here that fetches $ticker_info
// from some ticker resource
return $ticker_info;
}
function smarty_function_load_ticker($params, $smarty)
{
// call the function
$ticker_info = fetch_ticker($params['symbol']);
// assign template variable
$smarty->assign($params['assign'], $ticker_info);
}
?>
index.tpl
{load_ticker symbol='SMARTY' assign='ticker'}
Stock Name: {$ticker.name} Stock Price: {$ticker.price}
参见
{include_php},
{include}
和
{php}.
