
Updated calls to current Smarty API (register_function()/register_modifier()/register_block() -> registerPlugin(); assign_by_ref() -> assignByRef()). Fixed file includes in templates with quotes. Removed SmartyValidate.class.php includes. Still work in progress as some errors still appear!
62 lines
2.2 KiB
Markdown
62 lines
2.2 KiB
Markdown
Variable scopes {#language.variable.scopes}
|
|
===============
|
|
|
|
You have the choice to assign variables to the scope of the main Smarty
|
|
object, data objects created with [`createData()`](#api.create.data),
|
|
and template objects created with
|
|
[`createTemplate()`](#api.create.template). These objects can be
|
|
chained. A template sees all the variables of its own object and all
|
|
variables assigned to the objects in its chain of parent objects.
|
|
|
|
By default templates which are rendered by
|
|
[`$smarty->display(...)`](#api.display) or
|
|
[`$smarty->fetch(...)`](#api.fetch) calls are automatically linked to
|
|
the Smarty object variable scope.
|
|
|
|
By assigning variables to individual data or template objects you have
|
|
full control which variables can be seen by a template.
|
|
|
|
|
|
|
|
// 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);
|
|
|
|
|
|
|
|
See also [`assign()`](#api.assign), [`createData()`](#api.create.data)
|
|
and [`createTemplate()`](#api.create.template).
|