关于smarty if statement的问题。
我创建了一个计数器,我需要if语句中的计数器值。 计数器看起来像这样:
{assign var="counter" value=1}
看起来像这样:
{if $task.check_counter == "on"} checked {/if}
它必须看起来像:
{if $task.check_1 == "on"} checked {/if}
这可能吗?
更新 部分代码:
{assign var="counter" value=1}
{foreach from=$service item=sert}
{if $sert.parent_id == $task.task_id}
<tr>
<td>{$sert.name}</td>
<td>{$address_detail.start}</td>
<td style="text-align: center;">
<div>
<input type="checkbox"
class="icheck" name="c_{$counter}"
id="icheck_{$counter}"
{if $task.check_$counter == "on"} checked {/if} >
</div>
</td>
</tr>
{assign var="counter" value=$counter + 1}
{/if}
{/foreach}
答案 0 :(得分:2)
在使用“变量变量”的100个中,有99次,实际上应该定义一个数组。
如果不是动态地将项目命名为check_1
,check_2
等,而是定义了一个名为check_list
的项目数组,您可以这样做:{$task.check_list.$counter}
< / p>
请注意,您甚至可以使用表单字段执行此操作,因为PHP会在处理表单提交时将<input name="task[check][1]" />
之类的字段转换为适当的数组。
也就是说,由于这个特殊情况实际上不是变量名,而是$task
数组中的数组键,因此您可以将整个键定义为动态字符串,并使用它查找:
{assign var=array_key value='check_'|cat:$counter}
{if $task.$array_key == "on"}
答案 1 :(得分:0)
你可以试试这个;
分配您的智能变量,如;
$smarty->assign('counter', 1);
然后试试这个
{if $task.check_$smarty->get_template_vars('counter') == "on"} checked {/if}