ログ日記

作業ログと日記とメモ

ループ中のフォーム操作

せっかくフォームを操作できるflexyを使っているのに、ループ中だと使えないのが困る。
foreach中で

{loop:forms}
<tr>
  <td><input type="text" name="foo" value="{foo}"></td>
  <td>
    <select name="bar">
{loop:bar}
      <option value="{valueKey}">{valueText}</option>
{endloop:}
    </select>
  </td>
</tr>
{endloop:}

とかやらなくちゃいけない。
# {loop:var}は独自拡張なので{foreach:key,value}の代わりと思ってもらっていい。
textはまだ良いとしても、selectのoptionを手動(?)で書くのがスマートじゃない。
flexyを使ってるんだからelement->setOptions()を使いたい。
でもループ中だからといってループの数だけelementオブジェクトが存在するわけではないのでループ毎に違う値を設定できない。


ループ毎に違うelementを自動で設定するように改造するのは結構苦労しそうな予感がする。
どうしたものかなぁ・・。
flexyを使ってる人はどうやってるんだろう。
ループ中にelementと対応する変数を発見したら毎回setOptions()を呼び出すとか?それでうまくいくのかな。
flexyのelementの設定はoutputの前に行って、ループ中の変数はoutput時に行われるから、普通に考えると実装できないような・・。
mapleflexyビューを見ても、単純にelementの数だけチェックしてループ中のelementは考慮に入れてないような感じ。そもそもflexyビューは$foo_optionsに反応するからループ中に配列があったからと言って関係ないのか。うーむ。