バリデーションの(preg_match関数で)エラー
モデルのバリデーションで↓のようなエラーが発生したら、ルールが未定義かtypoしているかのどっちか。
Warning (2): preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash [CORE/cake/libs/model/model.php, line 2506]
開発サーバだったので、2506行目でルール名を確認してすぐ特定できた。
} elseif (!is_array($validator['rule'])) { var_dump($rule); $valid = preg_match($rule, $data[$fieldName]); }
ルールが、
- モデル自身のクラスメソッドではなく
- behaviorに実装したメソッドでもなく
- CakePHPの組み込みルール(Validationクラスのメソッド)でもなく
- 値が配列であれば正規表現の検索パターン文字列として評価する
というロジックで発生する事象。