变量作用范围
你可以设置Smarty对象、通过createData()
建立的对象、和createTemplate()
建立的对象的作用范围。 这些对象可以连接使用。 模板内可以使用全部由对象的变量和它们链条上的父对象的变量。
默认模板通过 $smarty->display(…)
或 $smarty->fetch(…)
调用,可获取到Smarty对象范围的变量。
通过传递特定的数据或模板对象,你可以完全在模板内控制这些变量的可视范围。
- // assign variable to Smarty object scope
- $smarty->assign('foo','smarty');
- // assign variables to data object scope
- $data = $smarty->createData();
- $data->assign('foo','data');
- $data->assign('bar','bar-data');
- // assign variables to other data object scope
- $data2 = $smarty->createData($data);
- $data2->assign('bar','bar-data2');
- // assign variable to template object scope
- $tpl = $smarty->createTemplate('index.tpl');
- $tpl->assign('bar','bar-template');
- // assign variable to template object scope with link to Smarty object
- $tpl2 = $smarty->createTemplate('index.tpl',$smarty);
- $tpl2->assign('bar','bar-template2');
- // This display() does see $foo='smarty' from the $smarty object
- $smarty->display('index.tpl');
- // This display() does see $foo='data' and $bar='bar-data' from the data object $data
- $smarty->display('index.tpl',$data);
- // This display() does see $foo='data' from the data object $data
- // and $bar='bar-data2' from the data object $data2
- $smarty->display('index.tpl',$data2);
- // This display() does see $bar='bar-template' from the template object $tpl
- $tpl->display(); // or $smarty->display($tpl);
- // This display() does see $bar='bar-template2' from the template object $tpl2
- // and $foo='smarty' form the Smarty object $foo
- $tpl2->display(); // or $smarty->display($tpl2);
参见assign()
, createData()
和 createTemplate()
.
原文: https://www.smarty.net/docs/zh_CN/language.variable.scopes.tpl