我编写了一个模拟 JavaScript 推送的基本 Smarty 修饰符。
function smarty_modifier_push($array, $push){
if(!isset($array)){
$array = array($push);
}elseif(is_array($array)){
$array[] = $push;
}
return $array;
}
这是我的 .tpl 文件中的代码
Problems:
<select name="problems[]" multiple="multiple">
<option value="">Select Problems</option>
{foreach from=$problems key=id item=name}
{$newArray|push:$id}
<option value="{$id}">{$name}</option>
{/foreach}
</select>
{$newArray}
问题:
我的下拉列表包含大约 20 个元素,所以$newArray
应该有大约 20 个 id,但是当我检查时$newArray
,它是空的。因此,在修改器运行后,它似乎永远不会被分配回模板。
我知道我可以{assign var=newArray}
事先在我的 .tpl 文件中使用,但我希望有一种方法可以从修饰函数中分配新变量。我也知道它可以从函数插件中获得,因为它通过了$smarty
变量,但我只想知道,如何使用修饰符插件来完成这项工作?