とあるセクシーなデータ分析官

を目指す渋谷で働くソーシャルゲーム分析者の卵

cake焼きました(13)

「tableを必要としなバリデート」


マニュアルや他のサイトを読むと、DBにデータをSAVEする時にバリデートを行うことが前提のように書いてある。
http://book.cakephp.org/ja/view/125/%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E3%83%90%E3%83%AA%E3%83%87%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3-Data-Validation



では、SAVEと関係なしに入力されたパラメータについてバリデートを行いたい場合はどうすべきか?
をメモしておきます

モデルへの記載

class Result extends AppModel
{
    var $name = 'Result';
    var $useTable = false;  //[重要]tableを意識しない時はテーブルを使わない設定を
    var $validate = array(  //バリデートを定義する
            'keyword' => array(
                'rule' => array('minLength', 1),
                'message' => 'キーワードを入力してください'
            ));
}


コントローラへの記載

        $keyword = $_GET['searchword'];
        $params = array('Result' => array('keyword' => $keyword));  //モデルに渡すパラメータを定義 
        $this->Result->set($params);  //モデルにパラメータをセット
        if(!$this->Result->validates()) {  //バリデートを行う。
            $this->redirect('error');      //パラメータが異常な時の処理
        }

これでいつでもどこでもバリデートを。