PHP Ethna Action_Form
Ethnaを使い始めて1週間くらい立ちました。
いや〜〜すっばらしい。メロメロにハマッテシマッタヨ。
とりあえずActionFormの基底クラス作ってみましたよ。
STEP1-STEP2-STEP3-STEP4・・・
と画面遷移していく中でフォーム定義の追加を簡単にできればなぁ〜っと。
下記のクラスを継承したActionFormクラスで
var $add_form = array( 'test' => array( 'name' => 'テストだよ', 'form_type' => FORM_TYPE_SUBMIT, 'type' => VAR_TYPE_STRING, ), /* 'test2' =>array( //追加したいフォーム沢山いれてあげて・・・ ),*/ );
っと定義するだけで、勝手にActionForm::formに追加してくれます。
で追加するだけだと画面遷移で戻った時に追加したフォームが邪魔になる事も
想定されるので、指定した名前のフォームを削除するメソッドも作ってみましたよ。
Ethna_Actionクラス内から使ってやってください。
$this->af->removeForm('削除対象フォームの要素名');
複数個一気に削除する場合は配列で渡すと楽ちん
function prepare() { // 削除対象要素名 $delformArray('test' , 'tset2'); if ($this->af->validate() > 0 ){ $this->af->removeForm($delformArray); return '遷移先'; } return null; }
しっかし、メソッド名とプロパティ名決めるセンスがまったくない・・・
困りものだ・・・
稚拙なソースだけど、こんなんでも少しは役にたつかなぁ〜・・・
っと自問自答してみる(笑
はてなの使い方覚えないとなぁ〜。。。よく分からん。。。
class Sample_ActionForm extends Ethna_ActionForm{ function Sample_ActionForm(&$controller){ Sample_ActionForm::_setAddForm(); parent::Ethna_ActionForm(&$controller); return null; } /** * $this->add_formに設定されたフォーム値を追加する * * @access private * @param * @return null */ function _setAddForm(){ if(isset($this->add_form) && is_array($this->add_form)){ foreach ($this->add_form as $name => $value) { // 省略値を補正($this->add_formの初期化) foreach ($this->def as $defvalue) { if (!isset($value[$defvalue])) { $this->add_form[$name][$defvalue] = null; } } } // 初期化したフォーム値を$this->formへセット foreach($this->add_form as $key => $value){ $this->setDef($key , $value); } } unset($this->add_form); return null; } /** * フォーム値を削除する * $_removelistで指定されたフォームを削除する * * @access public * @param array $_removelist 削除したいフォームを列挙した配列。stringでも可。 * @return null */ function removeForm($removelist){ if ($removelist){ foreach*1{ unset($this->form[$value]); } } } return null; } }