我写了一个基本的Smarty修饰符来模仿JavaScript的推动。
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
时,它是空的。因此,似乎在修改器运行后它永远不会被分配回模板。
我知道我可以事先在我的.tpl文件中使用{assign var=newArray}
,但我希望有一种方法可以在修饰符函数中分配新的变量。我也知道它可以从一个函数插件中获取,因为它传递了$smarty
变量,但我只是想知道具体,如何使用修饰符插件来完成这项工作?
答案 0 :(得分:0)
SMARTY FORUM上发布了一些可能对您有所帮助的代码。其他人已经指出,这是一种让你做你需要的方式,但它有点复杂,并不保证在新的更新出来时工作。希望它可以帮助你。欢呼声。
答案 1 :(得分:0)
尝试推动“&amp;”在$ array变量之前 像那样
function smarty_modifier_push(& $array, $push){
if(!isset($array)){
$array = array($push);
}elseif(is_array($array)){
$array[] = $push;
}
return $array;
}