0

关于 smarty if 语句的问题。

我已经创建了一个计数器,我需要在 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}
4

2 回答 2

2

在使用“变量变量”的 100 次中,有 99 次实际上应该定义一个数组。

如果您没有将项目动态命名为check_1check_2等,而是定义了一个名为 的项目数组check_list,则可以这样做:{$task.check_list.$counter}

请注意,您甚至可以对表单字段执行此操作,因为 PHP<input name="task[check][1]" />在处理表单提交时会将类似字段转换为适当的数组。

也就是说,由于这种特殊情况实际上不是变量名,而是数组中的数组键$task,因此您可以将整个键定义为动态字符串,并使用它进行查找:

{assign var=array_key value='check_'|cat:$counter}
{if $task.$array_key == "on"}
于 2013-10-30T20:19:12.860 回答
0

你可以试试这个;

分配您的 smarty 变量,例如;

$smarty->assign('counter', 1);

然后试试这个

{if $task.check_$smarty->get_template_vars('counter') == "on"} checked {/if}
于 2013-10-29T10:57:06.630 回答