【发布时间】:2012-10-16 15:22:15
【问题描述】:
我编写了一个模拟 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 时,它是空的。因此,在修改器运行后,它似乎永远不会被分配回模板。
我知道我可以事先在我的 .tpl 文件中使用{assign var=newArray},但我希望有一种方法可以从修饰函数中分配新变量。我也知道可以通过函数插件来实现,因为它通过了 $smarty 变量,但我只想具体了解,如何使用修饰符插件来完成这项工作?
【问题讨论】:
-
您的最终目标是什么?您可以使用 .each 函数遍历 javascript 中的选项列表并访问所有 ID。或者您可以在调用模板之前将仅包含 id 的数组保存在 php 中。
-
@nathanhayfield -
$problems是动态的,所以直到我的代码中的这一点我才知道它是什么样子。是的,我可以使用 JavaScript,但因为我已经在使用 Smarty,所以在 Smarty 中完成这一切会更简洁,更方便,所以我想我会问一下。
标签: php plugins smarty modifier