繁体   English   中英

使用Smarty 3将Smarty变量分配给PHP

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM