在{php}标签中使用smarty变量

问题描述:

非常简单的问题,是否可以在{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

使用$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

是的,所有的变量都存储在$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

尝试使用 “全球”

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

谢谢,我得到了这个致命错误:调用一个非对象的成员函数get_template_vars():/ – Sherif 2012-01-12 00:54:07

{php} 
$var = $template->get_template_vars('...') 
{/php} 

$myValue = $template->getVariable('myVariable')->value; 
+0

你应该解释原因。 – 2015-07-11 06:15:38

答案从OP。这可能对其他人有帮助。

这很简单。

$var= "{$mysmartyvar}"; 

这是为我工作。