index » ラボ&備忘録 » PHP » Flexy » 動的エレメントを操作する(Flexy) このエントリーを含むはてなブックマーク

動的エレメントを操作する(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」とかでも良い。