CakePHPの複数のバリデーションルール適用について~即戦力になるための PHPシステム開発の教科書より

CakePHPのバリデーションについてメモ書きです。public $validateについて、何やら見慣れない記法が出てきたので、確認しておきましょう。

目次

‘notEmpty array()’ってなに?

上記のP148にあるCustomer.phpで使用されている、バリデーションチェックに関するコードを引用すると、こんな感じになっています。

[php]
class Customer extends AppModel {
(省略)
public $validate = array(
‘customer_cd’ => array(
‘notEmpty’ => array(
‘rule’ => array(‘notEmpty’),
‘message’ => ‘顧客コードを入力してください’,
),
),
);
}
[/php]

いわゆる「複数のバリデーションルールの適用」ってやつですね。’customer_cd(顧客コードに対して)’という項目について、以下の3つのことをチェックしています。

  • 顧客コードが空でないかどうか
  • コードの文字数は10文字以内で収まっているか
  • そのコードには数値のみが入力されているか

ただちょっと面食らったのが、customer_cd array()の第1引数です。

‘notEmpty array()’があって、さらにその下の第1引数として、’rule’ => array(‘notEmpty’)があるところ。何だコレは?

notEmpty’が2回も出てきて、紛らわしい。何か意味があるのでしょうか?

バリデーションチェックを見やすくするための名前(だと思う)

なぜこんな書き方になるのか、いろいろ調べるているうちに、CakePHP2 実践入門 (WEB+DB PRESS plus)のP107で、こんなコードに出会いました。複数のルールを適用するvalidateの例として挙がっています。

[php]
class Friend extends AppModel {
(省略)
public $validate = array(
‘first_name’ => array(
‘rule1’ => array(
‘rule’ => ‘alphaNumeric’,
‘require’ => true,
‘allowEmpty’ => false,
‘message’ => ‘名前は英数字で入力してください’,
),
‘rule2’ => array(
‘rule’ => array(‘between’, 2, 23),
‘message’ => ‘名前は2文字以上32文字以内で入力してください’
),
),
);
}
[/php]

このコードでは、’first_name’という項目について、’rule1’と’rule2’に分けて、複数のルールを適用させています。そして、ここからが私の(勝手な)推測。もし間違ってたらごめんなさい…。

1.’rule1’、’rule2’とかいうコアバリデーションルールや、バリデーションオプションのキーなんてないはず。

2.と言うことはこれらは命名は任意。

3.冒頭で疑問に思った’notEmpty array()’の役割は、チェックの内容を分かりやすくするためだけであって、名前は’hoge’とか’foo’とか何でもでも良い。

CakePHPのバリデーションルールの適用って、独自ルールを決める以外は、かっちり決まっているのかと思ってましたが、そうでないところもあるんですね。

まだこの本をしてちゃんと動かしたわけではないので、アプリケーションが出来上がったら、’hoge’とか’foo’とか突っ込んでみよう。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次