Bonsoir,
J'ai été confronté au même problème il y a peu. J'avais besoin d'enregistrer des noms, donc lettres, y compris accents, tirets et espaces, également avec CakePHP.
J'ai utilisé la regex suivante :
function alphabetic($check) {
$value = array_values($check);
$value = $value[0];
return preg_match('|^[a-zA-ZáàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ-]*$|', $value);
}
PS : il y a une fonction dédiée à CakePHP sur le forum.