View
フォームの値を動的に変更できるようになったけど、ちょっとまずいことになった。
どうしてもFlexyの方からフレームワークの関数を呼び出さないといけなくなって、依存性が急に高くなってしまった。
でもその代わり、例えば
<table> {loop:ITEMS} <tr> <td>{itemId}</td> <td>{itemName}</td> <td>{itemNum}</td> <td> <form name="changeItem"> <input type="text" name="num" value="{num}"> <input type="submit" value="変更"> </form> </td> <td> <form name="deleteItem"> <input type="submit" value="削除"> </form> </td> </tr> {endloop:} </table>
ってなこともできるようになった。
どういうことかと言うと、設定ファイルを書いたらフォーム名からHidden値の設定ができる。
で、普通ならフォームのエレメントは$elementに置き換えられるから、その中の属性を変数にはできない。
中の値を変数にするには、$elementオブジェクトを作る時に自分で変数を入れる程度。
しかしこれではループ中に動的な変数を割り当てられない。
そこでFlexyとフレームワークを連携させて、設定ファイルに
changeItem:itemId = $itemId
と書けば、Hiddenタグのvalueに$itemIdを代入しつつループができるようにした。
上の例ではもちろん
changeItem:action = ChangeItem deleteItem:action = DeleteItem
などとして固定文字列でアクションも指定する。
HTMLからHiddenを削除して設定ファイルに追い出す、たったこれだけのために大がかりになってしまってやりすぎた感は否めない・・。