从smarty访问PHP文件的变量(本地或全局)


Accessing a variable (local or global) of PHP file from smarty

我有一个php文件,其中包含一些局部和全局变量(例如$foo)
从该文件中调用一个smarty对象
如何在不更改PHP文件的情况下从smarty脚本访问$foo?

感谢

如果您有一个名为BASE的常量变量,并且定义如下:

define('BASE', 'Boise');

您可以通过以下方式智能地访问变量:

$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中的所有内容都可用

你不能。您必须在PHP文件中将其分配给smarty。

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