如何将 Smarty 变量传递给 PHP 函数?

How to pass Smarty variable to PHP function?

这不是一个重复的问题,我无法使用其他线程的答案解决我的问题,而且我的问题是不同的。

我正在尝试在 Smarty 插件函数中使用 PHP 打印带有附加参数的 URL。我用的软件是WHMCS

下面是我的函数的示例代码:

<?php 
/* 
 * Smarty plugin 
 * ------------------------------------------------------------- 
 * File:     function.aff.php 
 * Type:     function 
 * Name:     aff 
 * Purpose:  outputs a random magic answer 
 * ------------------------------------------------------------- 
 */ 
function smarty_function_aff($params, &$smarty) 
    { 
           $affiliateid = $params['affiliateid']; 
           $refflink = 'http://example.com/aff.php?aff=' . $affiliateid .''; 

           print $refflink; 
    } 
?>

在模板文件中,我使用 {aff} 应该打印整个 URL 包括附加参数,但是它打印 URL 像这样:http://example.com/aff.php?aff=好像 $affiliateid 变量不存在。

现在,如果我在模板文件中直接使用以下 ($affiliateid},它将输出用户附属 ID。但是我需要在上面的 PHP 函数中使用它。直接写在PHP as $affiliateid 好像不行。

我在这里缺少什么?有什么建议吗?谢谢。

您可以这样使用您的函数:

{aff affiliateid=$affiliateid}

有关详细信息,请参阅此 link:http://www.smarty.net/docsv2/en/plugins.functions.tpl

它指出:

All attributes passed to template functions from the template are contained in the $params as an associative array.

属性 (http://www.smarty.net/docsv2/en/language.syntax.attributes.tpl) 是我上面代码行中的 affiliateid=$affiliateid 部分。