2012-01-27 48 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可用