2012-01-11 87 views
3

非常簡單的問題,是否可以在{php} {/ php}標籤中使用smarty var。我知道這是不贊成,毫無意義,不推薦等,但請,我正在尋找一個簡單的補丁!在{php}標籤中使用smarty變量

喜歡的東西

{php} 

$result = mysql_query("SELECT value FROM table WHERE fieldid = 9 AND relid = {MYSMARTYVAR}"); 

{/php} 

謝謝!

更新:我已經嘗試了以下方法。

1-$var = $this->get_template_vars('smarty_var'); 
2-$var = $smarty->getTemplateVars('smarty_var'); 
3-$var = $this->_tpl_vars['smarty_var']; 

所有給我致命錯誤,這$不用時對象上下文等 我真的在WHMCS環境,如果這解釋了爲什麼也許某些事情被阻止或禁用?

Update 2;發現一個比看起來更簡單的解決方案,我覺得很愚蠢: $ var =「{$ mysmartyvar}」;

謝謝大家!

+0

爲什麼你需要這個?我認爲如果你從你的php調用mysql(在調用smarty之前)會更好。或者你有什麼特別的理由? – uzsolt 2012-01-12 14:08:56

回答

5

使用$this->get_template_vars('smarty_var')獲得Smarty的變量。

$result = mysql_query("SELECT value FROM table WHERE fieldid = '9' AND relid = '" . $this->get_template_vars('smarty_var') . "'"); 
+0

感謝普雷斯頓,我已經嘗試了get_template_vars方法,以及getTemplateVars,但在兩種情況下,我都遇到致命錯誤,比如'''在非對象上使用這個''; – Sherif 2012-01-12 00:09:00

+0

當不在對象上下文中* – Sherif 2012-01-12 00:09:18

+0

您是否嘗試用您在PHP文件中給出Smarty對象的名稱替換「$ this」? – Preston 2012-01-12 00:20:53

0

是的,所有的變量都存儲在$this->_tpl_vars,所以它應該是這樣的:

{php} 

$result = mysql_query("SELECT value FROM table WHERE fieldid = 9 AND relid = {$this->_tpl_vars['MYSMARTYVAR']}"); 

{/php} 
+0

謝謝,但我得到這個錯誤;警告:mysql_fetch_array()期望參數1是資源,布爾給定我 – Sherif 2012-01-12 00:10:56

-1

嘗試使用 「全球」

{php} 
global $smarty_object; 
$var = $smarty_object->get_template_vars('whatever'); 
{/php} 
+1

謝謝,我得到了這個致命錯誤:調用一個非對象的成員函數get_template_vars():/ – Sherif 2012-01-12 00:54:07

2
{php} 
$var = $template->get_template_vars('...') 
{/php} 
0
$myValue = $template->getVariable('myVariable')->value; 
+0

你應該解釋原因。 – 2015-07-11 06:15:38

1

答案從OP。這可能對其他人有幫助。

這很簡單。

$var= "{$mysmartyvar}"; 

這是爲我工作。