model内に独自関数を定義してcontrollerから利用する

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関数としても利用できる点も重要。

Webエンジニアブログにコメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

model内に独自関数を定義してcontrollerから利用するの記事にコメントを投稿