xintrea
Новичок
Smarty: Как положить возврат из зарегистрированной PHP-функции в Smarty-переменную?
Здравствуйте!
Вопрос по Smarty, только начал разбираться с ним.
Ситуация: есть PHP-функция, которая возвращает ассоциативный массив.
(В реальной функции массив конструируется из базы)
Эта функция зарегистрирована в объекте Smarty.
Вопрос. Как в шаблоне получить возврат из этой функции в Smarty-переменную? То есть, я хочу иметь в Smarty-переменной ассоциативный массив.
Пробую так: {assign var='menu' value={smt_get_menu_array}}
Но вместо массива переменная $menu остается пустой, а в браузер на месте такой конструкции появляется одна скобка "}" и все. Как же положить возвращаемый массив из PHP-функции в Smarty-переменную?
PS: Пожалуйста, не советуйте делать внутри PHP-функции конструкцию
smarty->assign('menu',$menu); Если так сделать, то нужно и в шаблоне
и в PHP-коде постоянно синхронизироваться - какие переменные
заполняются в PHP-коде, и соответственно использовать их в шаблоне.
Такой подход лишает основных преимуществ использования шаблонизатора.
Здравствуйте!
Вопрос по Smarty, только начал разбираться с ним.
Ситуация: есть PHP-функция, которая возвращает ассоциативный массив.
(В реальной функции массив конструируется из базы)
PHP:
function php_get_menu_array()
{
$menu[1]['name']='Главная';
$menu[1]['url']='index.php';
$menu[2]['name']='Новости';
$menu[2]['url']='news.php';
$menu[3]['name']='Гостевая';
$menu[3]['url']='guestbook.php';
return $menu;
}
PHP:
$smarty->register_function('smt_get_menu_array','php_get_menu_array');
Пробую так: {assign var='menu' value={smt_get_menu_array}}
Но вместо массива переменная $menu остается пустой, а в браузер на месте такой конструкции появляется одна скобка "}" и все. Как же положить возвращаемый массив из PHP-функции в Smarty-переменную?
PS: Пожалуйста, не советуйте делать внутри PHP-функции конструкцию
smarty->assign('menu',$menu); Если так сделать, то нужно и в шаблоне
и в PHP-коде постоянно синхронизироваться - какие переменные
заполняются в PHP-коде, и соответственно использовать их в шаблоне.
Такой подход лишает основных преимуществ использования шаблонизатора.