2012-01-27 80 views
5

我有一个php文件,其中包含一些本地和全局变量(例如$ foo)
从此文件调用smarty对象。
如何从smarty脚本访问$ foo而不更改PHP文件?从smarty访问PHP文件的变量(本地或全局)

谢谢

+1

您需要将变量分配给smarty对象,否则smarty将无法访问它。没有魔术棒来解决这个问题。 – rdlowrey 2012-01-27 15:04:00

回答

4

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

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

如果你有一个常变量称为BASE,并定义如下:

define('BASE', 'Boise'); 

你可以访问变量智者方式如下:

$smarty.const.BASE 
5

你曾经是能够通过使用{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} // Everything in $_SERVER是访问
  • 拼抢从$ _SESSION东西:{$smarty.session.MY_SESSION_VAL} // Everything in $_SESSION可用