Codeigniter3のバリデーション
Codeigniter3でバリデーションを書くときの覚え書き。
- postされた値をバリデーションする場合
- ライブラリの初期化時にルールを設定する場合
- 独自のバリデーションを行う場合
- viewでエラーを表示する場合
- コントローラーでエラーを取得する場合
- エラーメッセージを日本語にする場合
postされた値をバリデーションする場合
codeigniterでは手動でデータを設定しない場合、自動的にpostデータをバリデーションする。
$this->load->library('form_validation'); $config = [ [ 'field' => 'name', 'label' => '名前', 'rules' => [ 'trim', 'required', ], ], ]; $this->form_validation->set_rules($config); if ($this->form_validation->run() === TRUE) { // OK } else { // NG }
postされた値以外をバリデーションする場合
postされた値以外をバリデーションしたい場合は、set_data()を使用する。
$data = [ 'name' => 'yamada', ]; $this->form_validation->set_data($data);
ライブラリの初期化時にルールを設定する場合
引数にバリデーションルールを指定する。
$this->load->library('form_validation', [ [ 'field' => 'name', 'label' => '名前', 'rules' => [ 'trim', 'required', ], ], ]);
エラーメッセージの前後のタグを変更する場合
prefixとsuffixを指定する。デフォルトはpタグ。
$this->load->library('form_validation', [ 'error_prefix' => '<p>', 'error_suffix' => '</p>', ]);
独自のバリデーションを行う場合
例)無名関数(クロージャ)を利用して名前が'yamada'かどうかをチェックする場合。
$_name = 'yamada'; $config = [ [ 'field' => 'name', 'label' => '名前', 'rules' => [ 'trim', 'required', [ 'check_name', function($value) use ($_name) { if ($value == $_name) { return TRUE; } else { return FALSE; } }, ], ], 'errors' => [ 'check_name' => '%s が山田ではありません。' ] ], ];
viewでエラーを表示する場合
全てのエラーを表示する場合
<?php echo validation_errors(); ?>
個別でエラーを表示する場合
<?php echo form_error('name'); ?>
コントローラーでエラーを取得する場合
全てのエラーを取得する場合
$errors = $this->form_validation->error_array();
個別でエラーを取得する場合
$errors = $this->form_validation->error('name');
エラーメッセージを日本語にする場合
application/config/config.phpでlanguageをjapaneseに変更する。
$config['language'] = 'japanese';
system/language/englishフォルダ内のform_validation_lang.phpをコピーし、application/languageフォルダにjapaneseフォルダを作成しペーストする。
エラーメッセージを適当な文字に変更する。
$lang['form_validation_required'] = '{field} を入力してください。';