私はプログラムになれていないので、重複してコードを書いてしまう事が多々あります。そんな時に、少しでも外部ファイルへ設定情報的にまとめることができると、情報が一箇所に集中して、訂正する時も便利ですよね。
今回は、CodeIgniterのバリデーションルールを外部ファイルにまとめる方法をメモしておきます。
確認環境
- CodeIgniter2.1.3(英語版)
ファイル置き場とルール
- form_validation.phpというファイル名でapplication/config/に作成します。
- バリデーション設定は、$configという変数名にすること。
- バリデーション設定は、例えば「ユーザーログイン用」「投稿用」といった具合に場合分けができるので便利。
コード例
上記の「ユーザーログイン用(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部分が、バリデーション設定で指定した名前に当たります。