6.バリデーション#2自分でバリデーションを設定する
自分でバリデーションを設定するときはモデルにメソッドを作成します
■app/models/board.php■
<?php
class Board extends AppModel {
var $name = 'Board';
var $validate = array(
//ここに検証ルールを書いてくよ
)
function hogehoge(){
//ここに自作の検証ルールを作るよ
}
}
?>
て感じになります
で、日本語の文字数をチェックするメソッドですが、これはぐぐったらあったのでそのままいただいてしまいます
参考URL:CakePHP Note:独自の検証ルールを使用する
function maxLength($data, $max) {
$check = array_shift($data);//配列から取り出す
$length = mb_strlen($check);
return ($length <= $max);
}
function minLength($data, $min) {
$check = array_shift($data);//配列から取り出す
$length = mb_strlen($check);
return ($length >= $min);
}
これを追加しましたので結果モデルはこうなりました
■app/models/board.php■編集最後[完成]
<?php
class Board extends AppModel {
var $name = 'Board';
var $validate= array(
'title' => array(
array('rule' => array('minLength', 3),'message' => 'タイトルは 3文字以上入れてね'),
array('rule' => array('maxLength',20),'message' => 'タイトルは20文字以下でね')
),
'contributor'=> array(
array('rule' => array('minLength', 3),'message' => '投稿者名は3文字以上入れてね'),
array('rule' => array('maxLength',15),'message' => '投稿者名は15文字以下でね')
),
'comment' => array(
array('rule' => array('minLength', 10),'message' => 'コメントは10文字以上入れてね'),
array('rule' => array('maxLength',100),'message' => 'コメントは100文字以下でね')
));
function maxLength($data, $max) {
$check = array_shift($data);
$length = mb_strlen($check);
return ($length <= $max);
}
function minLength($data, $min) {
$check = array_shift($data);
$length = mb_strlen($check);
return ($length >= $min);
}
}
?>
長い…もしかしたらもっといいやり方があるのかもしれないけどここはこれでOKとします
さらに本当はこれに加えて半角英数字のみはNG、改行が連続したらNGとかもやりたいのですが正規表現が使えるようなのでこれらもちょっと考えたらできそうです♪
(1.1まではHTMLヘルパー)
」となったのが
書き込んだら一覧表示のindex.ctpにリダイレクトしたいんだけど…というわけで





Write up a little something about yourself here. Something short and sweet, or longer if you'd like.