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_1アイテムに、 などの動的な名前を付ける代わりに、check_2というアイテムの配列を定義したcheck_list場合は、次のようにするだけです。{$task.check_list.$counter}

<input name="task[check][1]" />フォームの送信を処理するときに、PHP はフィールドのようなフィールドを適切な配列に変換するため、フォーム フィールドでもこれを行うことができることに注意してください。

とはいえ、この特定のケースは実際には変数名ではなく、配列内の配列キーである$taskため、キー全体を動的文字列として定義し、それを使用して検索できます。

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