在if语句中使用$(smarty)

时间:2013-10-29 10:52:46

标签: php if-statement smarty

关于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}

2 个答案:

答案 0 :(得分:2)

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

如果不是动态地将项目命名为check_1check_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}