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;
    }
}

*1:array)$_removelist as $key => $value){ if(isset($this->form[$value]