2013.1.1
私はプログラムになれていないので、重複してコードを書いてしまう事が多々あります。そんな時に、少しでも外部ファイルへ設定情報的にまとめることができると、情報が一箇所に集中して、訂正する時も便利ですよね。
今回は、CodeIgniterのバリデーションルールを外部ファイルにまとめる方法をメモしておきます。
上記の「ユーザーログイン用(user)」「投稿用(post)」を例にして、設定コードを書いてみます。
application/config/form_validation.php
array( //例)ユーザー認証用バリデーションルール
array(
'field' => 'name',
'label' => 'お名前',
'rules' => 'required|max_length[128]',
),
array(
'field' => 'email',
'label' => 'メールアドレス',
'rules' => 'valid_email|max_length[255]',
),
),
'post' => array( //例)投稿用バリデーションルール
array(
'field' => 'title',
'label' => 'タイトル',
'rules' => 'required|max_length[128]',
),
array(
'field' => 'comment',
'label' => 'コメント',
'rules' => 'required|xss_clean',
),
),
);
上記のように、場合分けをしたルールを作成できるので便利ですね。なお、fieldの値は、htmlフォーム側のname値と揃える必要があります。
いろいろな方法があるようですが、その中で私がやっている方法を書いておきます。
まず、autoload.phpの該当行にバリデーションライブラリの読み込みを記述します。
//バリデーションライブラリの読み込み
$autoload['libraries'] = array('form_validation');
次に、使用したいコントローラーの箇所で、例えば以下のように記述します。
if($this->form_validation->run('post') == FALSE)
{
//エラーの場合の処理
}else{
//問題ない場合の処理
}
run(‘post’)のpost部分が、バリデーション設定で指定した名前に当たります。