Доступ к переменной (локальной или глобальной) PHP-файла из smarty
У меня есть php-файл, который имеет некоторые локальные и глобальные переменные (например, $foo)
из этого файла вызывается объект smarty.
Как получить доступ к $foo из smarty script без изменения файла PHP?
Спасибо
3 ответа:
Если у вас есть постоянная переменная, называемая BASE, и определенная следующим образом:
define('BASE', 'Boise');
Вы можете получить доступ к переменной в smarty следующим образом:
$smarty.const.BASE
Раньше вы могли обойти это с помощью тегов
{php}{/php}
, но поскольку это не рекомендуется, теперь вы должны назначить свои переменные через$smarty->assign()
, единственное исключение-константы и переменные сервера, к которым у вас все еще есть прямой доступ через объект$smarty
.(вы также можете повторно включить теги
{php}
, Если хотите и не заботитесь о потенциальных причинах безопасности, по которым они были отключены в первую очередь).Любая из переменных запроса, таких как
$_GET
,$_POST
,$_COOKIE
,$_SERVER
,$_ENV
и$_SESSION
доступны через объект$smarty
.Благодаря этому-большая часть данных, с которыми я работаю, может быть просто доступна через объект
$smarty
без необходимости создавать тонну (скопированных) переменных.Напр.:
- доступ к константе:
{$smarty.const.MY_CONST_VAL}
- доступ к $ _SERVER var:
{$smarty.server.REQUEST_METHOD}
//все в $_SERVER доступно- хватаю что-то из $_SESSION:
{$smarty.session.MY_SESSION_VAL}
//Все в $_SESSION является доступно