可以访问 Smarty 对象的 Smarty 修改器插件

Smarty modifier plugin with access to Smarty object

PHPSmarty 的修改器插件可以访问 Smarty 对象吗?

block和function插件类型都以当前Smarty对象为参数。即

function smarty_function_NAME($params, Smarty_Internal_Template $Smarty) {...}
function smarty_block_NAME($params, $content, Smarty_Internal_Template $Smarty, &$repeat) {...}

但是修改器插件没有。即

function smarty_modifier_NAME($arg1, $arg2, ...) {...}

有什么方法可以从修饰符中访问 Smarty 对象吗?

我想制作一个修饰符来获取变量名称字符串的值,如下所示:

{$colorblue = '#0317e9'}
{$index = 'blue'}
{$_color = "color`$index`"|smarty_variable_value}

我最终创建了一个小的 get 扩展函数来处理这个问题:

function smarty_function_get($params, Smarty_Internal_Template $Smarty) {
    if (!isset($params['name'])) {
        return;
    }

    $value = $Smarty->getTemplateVars($params['name']);

    if (!isset($params['assign'])) {
        return $value;
    }

    $Smarty->assign($params['assign'], $value);
}

调用方式

{get name="color`$index`" assign="_color"}