Cakephpにおけるモデル内ユーザー定義関数
Cakephpでは、model内に開発者が独自に関数を設定できるようになっている。独自に定義した関数をcontrollerから呼び出したり、モデル内のvalidation関数として利用することができる。
model側
以下の例は、モデル内でfindを利用し、該当データがあるかないかを検証するための関数。$nが偽であればfalseを返すようになっている。
function checkIdAndPass($data){ $n = $this->find('count',array( 'conditions' => array( 'Product.id' => $data['Product']['id'], 'Product.password' => $data['Product']['password'], ) )); //var_dump($data); return $n > 0 ? true : false; }
controller側
if ($this->Product->checkIdAndPass($this->data) == 0) { //falseであれば処理を行う }
利用シーン
具体的な利用シーンとして以下の例をあげてみる。
if ($this->Product->checkIdAndPass($this->data) == 0) { //falseであれば処理を行う $this->Product->invalidate('password', "無効なパスワードです"); }
モデル関数を呼び出した結果がfalseであれば、Cakephpのinvalidate関数で意図的にpasswordフィールドをエラーとして扱うことができる。その際のエラーメッセージは上のように設定できる。
簡単な例ではあるが、モデル内に開発者独自の関数を定義し、自由に関数を使いこなすことはcakephpを使う上で役立つチップス。モデル内の定義関数は独自のvalidation関数としても利用できる点も重要。