動的エレメントを操作する(Flexy)

更新日
2017.06.30
作成日
2007.04.08

Flexy で動的エレメントの属性を操作する方法。

    たとえば、以下のようなコードをFlexyテンプレートで実現させたい場合。

    foreach ($entry as $e) {
      echo '<input name="type[{$e->id}]" value="{$e->value}">';
    }
    

    やっぱりここはFlexyっぽく

    {foreach:entryid,id}
      <input name="type[{id}]" />
    {end:}
    
    foreach ($entry as $e) {
      $oElements["type[{$e->id}]"] = new HTML_Template_Flexy_Element;
      $oElements["type[{$e->id}]"]->setValue($e->value);
    }
    

    とやりたいけど、これだと上手くいかないので。

    それなら、最初から結果を配列に入れて

    {foreach:entry,e}
      <input name="type[{e->id}]" value="{e->value}" type="text" />
    {end:}
    

    と書くのもいいのですけど、折角なのでHTML_Template_Flexy_Elementを使ってロジック側で操作したい所。

    ループ内の要素を操作するには、flexy:nameusesを使用。

    {foreach:entryid,id}
    	<input flexy:nameuses="id" name="type[%s]" />
    {end:}
    
    foreach ($entry as $e) {
    	$oElements["type[{$e->id}]"] = new HTML_Template_Flexy_Element;
    	$oElements["type[{$e->id}]"]->setValue($e->value);
    }
    

    という感じで、%sが「id」の値に置き換えられ操作可能になります。
    type_%sとかでもOK!