動的エレメントを操作する(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!