
Comparing changes: https://github.com/smarty-php/smarty/compare/v4.3.1...v4.4.1 It is noticeable that Smarty 4.3.1 does not officially support PHP 8.3. Is only supported with 4.4.0. Remark: During tests with Smarty 4.5.1, it was noticed that the following warning occurs: Deprecated: Using the unregistered function "function_exists" in a template is deprecated and will be removed in a future version. Use Smarty::registerPlugin to explicitly register a custom modifier. As of Smarty 5.X.X, templates must be revised again. The Smarty release 5.0.2 is already officially available. However, integration into FlatPress is not entirely trivial.
61 lines
2.3 KiB
Markdown
61 lines
2.3 KiB
Markdown
# Variable scopes
|
|
|
|
You have the choice to assign variables to the scope of the main Smarty
|
|
object, data objects created with [`createData()`](../../programmers/api-functions/api-create-data.md),
|
|
and template objects created with
|
|
[`createTemplate()`](../../programmers/api-functions/api-create-template.md). 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(...)`](../../programmers/api-functions/api-display.md) or
|
|
[`$smarty->fetch(...)`](../../programmers/api-functions/api-fetch.md) 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.
|
|
|
|
```php
|
|
<?php
|
|
// 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()`](../../programmers/api-functions/api-assign.md),
|
|
[`createData()`](../../programmers/api-functions/api-create-data.md)
|
|
and [`createTemplate()`](../../programmers/api-functions/api-create-template.md).
|