What is Smarty?
Why use it?
Use Cases and Work Flow
Syntax Comparison
Template Inheritance
Best Practices
Crash Course
You may use the Smarty logo according to the trademark notice.
For sponsorship, advertising, news or other inquiries, contact us at:
You have the choice to assign variables to the scope of the main Smarty object,
data objects created with createData()
,
and template objects created with createTemplate()
.
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(...)
or $smarty->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.
Example 4.6. Variable scope examples
// 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()
,
createData()
and
createTemplate()
.