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:
void smarty_function_name( |
$params, | |
&$smarty) ; |
array $params
;object &$smarty
;
Все атрибуты, передаваемые в функции шаблона из самого шаблона,
хранятся в $params
в виде ассоциативного массива.
Получить доступ к его значениям можно напрямую:
$params['start']
или используя
extract($params)
для импорта в таблицу.
Вывод (возвращаемое значение) функции будет подставлен в место расположения
тэга функции в шаблоне (функция fetch
например).
В качестве альтернативы, функция может выполнять какие либо действия
без какого-либо вывода (assign
функция).
Если функция должна присвоить(assign) значения некоторым переменным в шаблоне или
использовать иные возможности Smarty, то можно работать с объектом
$smarty
как обычно.
См. также: register_function(), unregister_function().
Example 16.1. Функция-плагин с выводом
<?php /* * Smarty plugin * ------------------------------------------------------------- * File: function.eightball.php * Type: function * Name: eightball * Purpose: outputs a random magic answer * ------------------------------------------------------------- */ function smarty_function_eightball($params, &$smarty) { $answers = array('Да', 'Нет', 'Никоим образом', 'Перспектива так себе...', 'Спросите позже', 'Все может быть'); $result = array_rand($answers); return $answers[$result]; } ?>
которая может быть использована в шаблоне следующим образом:
Вопрос: Мы когда-нибудь найдем время для отпуска? Ответ: {eightball}.
Example 16.2. Функция-плагин без вывода
<?php /* * Smarty plugin * ------------------------------------------------------------- * File: function.assign.php * Type: function * Name: assign * Purpose: assign a value to a template variable * ------------------------------------------------------------- */ function smarty_function_assign($params, &$smarty) { extract($params); if (empty($var)) { $smarty->trigger_error("assign: missing 'var' parameter"); return; } if (!in_array('value', array_keys($params))) { $smarty->trigger_error("assign: missing 'value' parameter"); return; } $smarty->assign($var, $value); } ?>