[英]Assign Smarty variable to PHP with Smarty 3
我使用的购物系统已从smarty 2更新到smarty 3,这导致了我们网站上的问题列表。 最糟糕的是,我们分配给所有在PHP中使用它们的Smarty变量不再起作用。
一个简短的例子:
{assign var=test value=$ORDER_NUMBER}
{php}
$order = $this->get_template_vars('test');
echo $order;
{/php}
这导致以下错误:
FATAL ERROR(1): "Using $this when not in object context"
现在,在Smarty Page上,我发现了一些代码行,它们执行相同的操作,但看起来有些不同,例如以下代码:
$order = $smarty->getTemplateVars('test');
结果是:
FATAL ERROR(1): "Call to a member function getTemplateVars() on null"
自Smarty 3以来,我发现所有这些“解决方案”都无济于事。
无论出于何种原因,以上所有内容均无效。 现在,我将外部PHP文件中{PHP} -tags中的代码外包了,然后将函数返回给smarty。
下面我为所有为此苦苦挣扎的人提供了一个示例(别忘了将您的PHP文件包括到index.php或其他内容中):
我想从数据库中获取有关产品的一些信息,但是在smarty中仅提供了{$module_data.PRODUCTS_ID}
。
因此,在我使用smarty标记的文件中,我将此变量发送给PHP中的函数: {$module_data.PRODUCTS_ID|@get_random_function}
然后在我的外部PHP文件中,执行PHP函数并返回所需的数据:
function get_random_function($products_id)
{
$t_sql = $sql = "SELECT * FROM products WHERE products_id='".$products_id."'";
$retval = mysql_query($t_sql);
$row = mysql_fetch_assoc($retval);
return $row['gm_needed_data'];
}
现在{$module_data.PRODUCTS_ID|@get_random_function}
输出我的PHP函数的返回值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.