可以访问 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"}
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"}