Cakephpのvalidationのごくごく単純な内容でハマった
記述方法について
maxLengthについて
validationの機能は動いていたのですが、下記のエラーがでてしまった。
1 |
Undefined offset: 0 [COREcakelibsmodelmodel.php, line 2435] |
で、よくよくドキュメントを確認してみると記述方法が間違っていました。
▼間違った記述方法
1 2 3 4 5 6 |
var $validate = array( 'hoge' => array( 'rule' => array('maxLength' => '100'), 'message' => '最大100文字までです。' ) ); |
↓
▼正しい記述方法
1 2 3 4 5 6 |
var $validate = array( 'hoge' => array( 'rule' => array('maxLength','100'), 'message' => '最大100文字までです。' ) ); |
▼間違った理由
その上で数値チェックをしていたので、記述法を同じだと勘違いしていました。
1 2 3 4 5 6 |
var $validate = array( 'age' => array( 'rule' => array('comparison', '>=', 18), 'message' => '18歳以上の方のみ対象です。' ) ); |
単純な間違いなのに、発見するのに30分くらいかかりました。
非常にくやしい。
ドキュメントを読む際に、ああだいたいこうだろうと流し読みしていたから招いたのでしょう。
残念。
Cakephp validationの説明
http://book.cakephp.org/ja/view/134/Core-Validation-Rules