CodeIgniterの勉強メモ (8) フォームバリデーション(検証)

ライブラリのインポート

$this->load->library('form_validation');

検証の実装

コントローラー側(PHP)

welcomeのregistアクションの話で、
お名前とメールアドレス二つの項目を検証します。

public function regist(){
    $this->load->helper("url");
    $this->load->library('form_validation');
    //必要のライブラリとヘルパーをインポート

    $this->form_validation->set_rules('user', 'お名前', 'required|min_length[2]');
    $this->form_validation->set_rules('email', 'メール', 'required|valid_email');
    //各項目に検証ルールを設定
    //引数1:formのフィールド名
    //引数2:エラーメッセージに表示される項目
    //引数3:検証ルール、ルール間は|で分ける

    $res = $this->form_validation->run();
    //検証実行、検証成功はtrue、失敗はfalseを戻す

    if ($res) {
        // その他の検証成功時の処理
    } else {
        $this->load->view('welcome/regist');
        // 検証失敗の場合、もう一度フォームを表示、同時にエラーメッセージも表示
    }
}

ビュー側(HTML)

welcomeのregistアクションの話で、
お名前とメールアドレス二つの項目を検証します。
ここで使うPHPメソッドは:

  • set_value(‘フィールド名’):送信された値を設定。一回送信してエラーがあって、また最初から打つならユーザが怒る。
  • form_error(‘フィールド名’):個別のエラーを表示
  • validation_errors():まとめてエラーを表示
<?php echo validation_errors(); ?>

<form method="post" accept-charset="utf-8" action="<?php echo site_url('welcome/regist') ?>">
    名前<input type="text" name="user"
    value="<?php echo set_value('user'); ?>">
    <?php echo form_error('user'); ?>
    <br />

    メール<input type="text" name="email"
    value="<?php echo set_value('email'); ?>" />

    <input type="submit" />
</form>

検証の結果図
スクリーンショット 2014-09-15 0.39.20

エラーのローカライズ

エラーが英語のままだと良くないので、ローカライズします。
まずはconfig/config.phpの言語設定を変更する。

$config['language'] = 'ja_jp';    //デフォルトはenglish

次はCodeIgniter/system/language/english/form_validation_lang.phpを
applicationかsystemにコピーし、englishフォルダもja_jpに変えます。
例:CodeIgniter/application/language/ja_jp/form_validation_lang.php

最後にこのja_jpのための言語ファイルを修正します。

$lang['required'] = "%s 書いてないよ。";
$lang['min_length'] = "%s を %s 文字以上にしろ。";

ローカライズされたら、日本語でエラーが表示されます。
スクリーンショット 2014-09-15 1.02.27

エラーメッセージの日本語訳
バージョンはちょっと古くなってますが、
日本CodeIgniterユーザ会様のリリースされた日本語パッケージがあります。
中には日本語のエラーメッセージがあります。
他のlanguageファイルも付いています。
URL:http://sourceforge.jp/projects/codeigniter/releases/53143

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>