Доступ к переменной (локальной или глобальной) PHP-файла из smarty


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

Спасибо

3 5

3 ответа:

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

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

Если у вас есть постоянная переменная, называемая 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 является доступно