Доступ к переменной (локальной или глобальной) файла PHP из smarty - PullRequest
6 голосов
/ 27 января 2012

У меня есть php-файл с некоторыми локальными и глобальными переменными (например, $ foo)
из этого файла вызывается объект smarty.
Как получить доступ к $ foo из скрипта smarty без изменения файла PHP?

Спасибо

Ответы [ 3 ]

10 голосов
/ 21 мая 2013

Если у вас есть постоянная переменная с именем BASE и определена так:

define('BASE', 'Boise');

Вы можете получить доступ к переменной в smarty следующим образом:

$smarty.const.BASE
5 голосов
/ 17 декабря 2013

Раньше вы могли обойти это с помощью тегов {php}{/php}, но, поскольку это устарело, теперь вы должны присваивать свои переменные с помощью $smarty->assign(), единственное исключение из этого - константы и переменные сервера, которые вы до сих пор иметь прямой доступ через объект $smarty.

(Вы также можете повторно включить теги {php}, если хотите, и не заботитесь о потенциальных причинах безопасности, для которых они были отключены в первую очередь).

Любая из переменных запроса, таких как $_GET, $_POST, $_COOKIE, $_SERVER, $_ENV и $_SESSION, доступна через объект $smarty.

Из-за этого - большинство данных, с которыми я работаю, могут быть просто доступны через объект $smarty без необходимости создавать тонну (копируемых) переменных.

например:.

  • Доступ к константе: {$smarty.const.MY_CONST_VAL}
  • Доступ к переменной $ _SERVER: {$smarty.server.REQUEST_METHOD} // Все в $ _SERVER доступно
  • Получение чего-либо из $ _SESSION: {$smarty.session.MY_SESSION_VAL} // Все в $ _SESSION доступно
4 голосов
/ 27 января 2012

Вы не можете. Вы должны назначить его smarty в файле PHP.

$smarty->assign('foo', $foo);
...