validate機能

よくよく考えたら、検証機能をvalidateメソッド内で完結させる必要なんてないことに気づいた。validateメソッド内では検証のための設定だけ行って、その結果による処理はexecuteメソッド内で書けばいい。

<?php
class Foo extends Moony_Action
{
    var $name;
    var $furigana;

    function validate(&$v)
    {
        $v->setRequired($this->name, '名前は必須入力');
        $v->setHiragana($this->furigana, 'ふりがなはひらがなで');
    }

    function execute()
    {
        if ($this->hasError()) {
            // 検証エラーの場合の処理
            $this->render('common/error.php');
            return;
        }

        // 検証エラーがない場合の処理
        $this->render();
    }
}
?>

これでrenderOnErrorなんてまどろっこしいメソッドは不要になる。