動的エレメントを操作する(Flexy)
2006.07.26
たとえば、以下のようなコードをFlexyテンプレートで実現させたい場合。
foreach ($entry as $e) {
echo '<input name="type[{$e->id}]" value="{$e->value}">';
}
やっぱりここはFlexyっぽく…
Template Code
{foreach:entryid,id}
<input name="type[{id}]" />
{end:}
PHP Code
foreach ($entry as $e) {
$oElements["type[{$e->id}]"] = new HTML_Template_Flexy_Element;
$oElements["type[{$e->id}]"]->setValue($e->value);
}
と書いても上手くいきません。
それなら、最初から結果を配列に入れて
Template Code
{foreach:entry,e}
<input name="type[{e->id}]" value="{e->value}" />
{end:}
と書くのもいいですが、折角なので「HTML_Template_Flexy_Element」を使ってロジック側で操作したい所。
ループ内の要素を操作するには、「flexy:nameuses」を使用します。
Template Code
{foreach:entryid,id}
<input flexy:nameuses="id" name="type[%s]" />
{end:}
PHP Code
foreach ($entry as $e) {
$oElements["type[{$e->id}]"] = new HTML_Template_Flexy_Element;
$oElements["type[{$e->id}]"]->setValue($e->value);
}
って感じで操作可能。
%sが「id」の値に置き換えられる。
「type_%s」とかでも良い。
