以前からCakePHPのバリデーションルールのalphaNumericが日本語を通してしまうという問題がありましたが、CakePHP2.2.0でも同様のようです。
CakePHP1.3系ならAppModelで
function alphaNumeric($check) { return preg_match('/^[a-zA-Z0-9]+$/', $value); }
(多分)これで良かったと思うのですが、CakePHP2系になってから、第1引数に渡ってくる値がarray([フィールド名] => [値])になったようなので、下記のようにします。
public function alphaNumeric($check) { $value = array_values($check); // 配列の添字を数値添字に変換して・・・ $value = $value[0]; // 最初の値を取る return preg_match('/^[a-zA-Z0-9]+$/', $value); }