2009/01/09

[memo] Ethna Dynamic Form API implementation

超個人的なメモでつ(*´〜`)

Ethna は フォーム定義を以下のように固定で書くので、フォーム定義が動的に決まる場合にどこにそれを定義するコードを書けば良いかわからない、という問題が存在する。

var $form = array(
'sample' => array(
'type' => VAR_TYPE_INT,
'name' => 'サンプル',
),
);

現在は、prepare() に書いたり、Ethna_ActionForm の子クラスのコンストラクタに書いたりするしかないのであるが、現在の安定版では DBアクセス等のロジックを Ethna_ActionForm のコンストラクタに書くことができない。なぜなら、Ethna_Backend や Ethna_Session 等の、必要なオブジェクトが初期化されていないからである。

----

現状のtrunkでは、Ethna_ActionForm 初期化後に、DBアクセスのロジックが書けるように既に改造済みだったりする。なので、あとは動的にフォームを定義するフックを書くだけである。

実は、動的にフォームを決めるタイミングは以下のふたつがある。こいつらを一緒のフックにするわけにはいかないので、おそらく setD(ynamic)FormDef_[pre|post]Helper とかを定義するのだろう。なんかわかりやすいAPIの名前はないものか。
  • Ethna_ActionClass にアクセスする前に、Ethna_ActionForm を初期化した直後
  • View と連携するためのフォームヘルパを使うとき、Ethna_ActionForm を初期化した直後

0 件のコメント: