This article provides a detailed analysis of the preparation of the Smarty plug-in to load data directly in the template. if you need a friend to refer to the previous usage of smarty, this variable can be used at the front-end only when the php program reads data (usually from the database) and then the assign is assigned to the template variable. This is not bad, but it is a little difficult to maintain the php code when there is a lot of data, especially when there is a lot of multi-mode board data.
Therefore, I wrote a plug-in that combined with the previous crud class implementation, some modular data can be loaded in the front-end template.
The code is as follows:
/**
* Smarty plugin
* @ Package Smarty
* @ Subpackage plugins
*/
/**
* Smarty {load_data} function plugin
*
* Type: function
* Name: eval
* Purpose: evaluate a template variable as a template
* @ Link http://smarty.php.net/manual/en/language.function.eval.php {eval}
* @ Param array
* @ Param Smarty
*/
Function smarty_function_load_data ($ params, & $ smarty)
{
$ Class = (! Isset ($ params ['class']) | empty ($ params ['class'])? 'Cls _ crud ': trim ($ params ['class']);
(! Isset ($ params ['table']) | empty ($ params ['table']) & exit ('table' is empty! ');
$ Db = $ class: factory (array ('table' => $ params ['table']);
// Var_dump ($ params );
If (! Empty ($ params ['assign']) {
// Assign the value of data to the variable $ params ['assign'], so that the front-end can use this variable (for example, you can use foreach to output a list)
$ Smarty-> assign ($ params ['assign'], $ db-> get_block_list (array ($ params ['where']), $ params ['limit']);
}
}
?>
Writing a plug-in not only reduces a lot of maintenance, but also has a significant advantage in that it can perform unified formatting and filtering operations on the query database.
In this way, the data can be loaded at the front end as follows:
The code is as follows:
{Load_data assign = "list" table = "test" where = "'id' <100" limit = 10}
{Foreach from = $ list item = rec}
...
{/Foreach}