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 件のコメント:
コメントを投稿