カテゴリ: CodeIgniter 更新日: 2026/02/23

CodeIgniterでフォームのバリデーションエラーを表示する方法!初心者向け徹底解説

CodeIgniterでエラーメッセージをフォームに表示する方法
CodeIgniterでエラーメッセージをフォームに表示する方法

先生と生徒の会話形式で理解しよう

生徒

「お問い合わせフォームを作っているのですが、入力漏れがあった時に『名前を入力してください』といったエラーメッセージを自動で出す方法ってありますか?」

先生

「CodeIgniter(コードイグナイター)には『バリデーション』という便利な機能があって、それを使えば簡単にエラーメッセージを表示できるんですよ。」

生徒

「バリデーション……難しそうな言葉ですね。パソコン初心者でも設定できますか?」

先生

「大丈夫です!ルールを決めて、表示用の命令を一行書くだけです。基本から順番に、ゆっくり解説していきますね。」

1. バリデーションとエラーメッセージの基本

1. バリデーションとエラーメッセージの基本
1. バリデーションとエラーメッセージの基本

プログラミングの世界でよく聞くバリデーション(Validation)とは、日本語で「検証」や「確認」という意味です。例えば、会員登録フォームでメールアドレスの欄が空っぽだったり、数字を入れる場所に漢字が入っていたりしたら困りますよね。そういった「入力ミス」をプログラムが自動でチェックし、「ここが間違っていますよ!」と教えてくれる仕組みをバリデーションと呼びます。

PHPのフレームワークであるCodeIgniterを使うと、このチェック作業を非常に効率よく行うことができます。自分で一つずつ「もし空だったら……」と書かなくても、あらかじめ用意されたルールを適用するだけで、適切なエラーメッセージを画面に表示させることが可能です。これはウェブサイト制作において、ユーザーが迷わず入力できるようにするための「おもてなし」のような機能だと言えます。

2. エラーを表示するための事前準備(コントローラーの設定)

2. エラーを表示するための事前準備(コントローラーの設定)
2. エラーを表示するための事前準備(コントローラーの設定)

まずは、どの項目をチェックするかという「ルール」を決めます。これを担当するのがコントローラーというファイルです。コントローラーは、ウェブサイトの「司令塔」のような役割を果たします。ここで「名前は必須です」「メールアドレスの形式にしてください」といった命令を出します。

以下のコードは、お問い合わせフォームなどでよく使われる設定の例です。まずは、この司令塔がどのように動くのか、コードのイメージを見てみましょう。


public function send()
{
    // 1. バリデーションのルールを設定します
    $rules = [
        'username' => 'required|min_length[3]',
        'email'    => 'required|valid_email',
    ];

    // 2. チェックを実行します
    if (!$this->validate($rules)) {
        // もしエラーがあれば、元の入力画面に戻ります
        return view('contact_form');
    }

    // 3. エラーがなければ完了画面へ
    echo "送信が完了しました!";
}

このコードの中にあるrequiredは「必須入力」、min_length[3]は「最低3文字以上」、valid_emailは「正しいメール形式か」をチェックする魔法の言葉です。これだけで、複雑なチェックが完了します。

3. 画面にエラーメッセージを表示させる魔法の関数

3. 画面にエラーメッセージを表示させる魔法の関数
3. 画面にエラーメッセージを表示させる魔法の関数

ルールを決めただけでは、画面には何も表示されません。次に、実際の入力画面(これをビューと呼びます)に、「エラーがあったらここに表示してね」という指示を書く必要があります。ここで登場するのが、CodeIgniterが提供している便利な関数です。

最もよく使われるのが、validation_list_errors()という命令です。これ一つを書くだけで、発生したすべてのエラーを箇条書きでまとめて表示してくれます。パソコンの操作に慣れていない方でも、特定の場所にこの一行をコピー&ペーストするだけで良いので、とても手軽です。


<div class="alert alert-danger">
    <?= validation_list_errors() ?>
</div>

<form action="/send" method="post">
    <input type="text" name="username" placeholder="お名前">
    <input type="email" name="email" placeholder="メールアドレス">
    <button type="submit">送信する</button>
</form>

上記のコードを画面に表示させると、入力漏れがある場合に自動的に赤い枠(alert-danger)の中にエラー内容が表示されるようになります。まるで自動で採点してくれる先生のような機能ですね。

4. 各入力欄のすぐそばにエラーを出したい場合

4. 各入力欄のすぐそばにエラーを出したい場合
4. 各入力欄のすぐそばにエラーを出したい場合

「まとめて一番上に表示されるのもいいけれど、入力欄のすぐ下に個別にメッセージを出したい!」という場合もありますよね。その方が、どこを直せばいいのか一目でわかるため、利用者にとって優しい親切な設計になります。そんな時に使うのが、validation_show_error('項目名')という命令です。

それぞれの入力項目の名前(name属性といいます)を指定することで、ピンポイントでその場所だけのエラーメッセージを呼び出すことができます。例えば、名前の入力欄の下には名前のエラーだけを、メールの入力欄の下にはメールのエラーだけを表示させるといった具合です。


<form action="/send" method="post">
    <div>
        <label>お名前:</label>
        <input type="text" name="username">
        <p style="color: red;"><?= validation_show_error('username') ?></p>
    </div>

    <div>
        <label>メールアドレス:</label>
        <input type="email" name="email">
        <p style="color: red;"><?= validation_show_error('email') ?></p>
    </div>

    <button type="submit">確認する</button>
</form>

このように設定することで、エラー箇所が明確になり、ユーザーがストレスなくフォームを修正できるようになります。ウェブサイト制作では、こうした細かな配慮が非常に重要です。

5. 入力した内容を消さない「値の保持」機能

5. 入力した内容を消さない「値の保持」機能
5. 入力した内容を消さない「値の保持」機能

エラーが表示されたときに、せっかく入力した文字がすべて消えてしまったら、ユーザーはガッカリしてしまいますよね。もう一度最初から入力し直すのはとても大変です。そこで、エラーが出ても「さっき入力した内容はそのまま残しておく」という工夫が必要です。これを値の保持(リポピュレート)と呼びます。

CodeIgniterでは、set_value('項目名')という命令を使うことで、前回入力した値を自動的に呼び戻すことができます。これは、エラーメッセージの表示とセットで覚えておきたい、非常に大切なテクニックです。


<form action="/register" method="post">
    <label>ユーザーID:</label>
    <input type="text" name="userid" value="<?= set_value('userid') ?>">
    <span class="error"><?= validation_show_error('userid') ?></span>

    <button type="submit">登録</button>
</form>

この一行を追加するだけで、ユーザーは間違えた部分だけを修正すれば済むようになります。初心者のうちは忘れがちですが、これを実装しているかどうかで、プログラミングの質が大きく変わります。

6. エラーメッセージを自分好みの日本語に変える方法

6. エラーメッセージを自分好みの日本語に変える方法
6. エラーメッセージを自分好みの日本語に変える方法

CodeIgniterの初期設定では、エラーメッセージが英語で表示されることがあります。例えば、「The username field is required.」といった具合です。これを「お名前は必ず入力してくださいね」といった親しみやすい日本語に変更することも可能です。

言語ファイルを日本語化する方法もありますが、コントローラーの中で個別にメッセージを指定することもできます。これを「カスタムエラーメッセージ」と呼びます。自分たちのサービスに合わせて、言葉遣いを工夫してみるのも面白いですよ。


$rules = [
    'username' => [
        'label'  => 'ユーザー名',
        'rules'  => 'required',
        'errors' => [
            'required' => '{field}を忘れているみたいですよ!入力してくださいね。',
        ],
    ],
];

if (!$this->validate($rules)) {
    return view('contact_form');
}

このように設定すると、実行結果は以下のようになります。


ユーザー名を忘れているみたいですよ!入力してくださいね。

システム的な冷たいメッセージではなく、温かみのある言葉に変えることで、ユーザーに安心感を与えることができます。プログラミングは単なるコードの羅列ではなく、画面の向こう側にいる人と対話するための道具なのです。

7. なぜフォーム処理にフレームワークを使うのか

7. なぜフォーム処理にフレームワークを使うのか
7. なぜフォーム処理にフレームワークを使うのか

最後に、なぜ自力でゼロから作らずにCodeIgniterのような「フレームワーク」を使うのかについてお話しします。もしフレームワークを使わずにフォームのチェック機能を作ろうとすると、非常に多くのコードを書かなければなりません。空チェック、文字数チェック、不正な記号のチェック……。これらをすべて手作業でやると、どこかに穴(セキュリティの弱点)ができやすくなります。

CodeIgniterは、世界中のプログラマーが長年使ってきた「安全な部品」が詰まった道具箱です。その道具を正しく使うことで、初心者でもプロ並みの安全で使いやすいフォームを作ることができるようになります。エラーメッセージを正しく表示させることは、その大きな第一歩です。焦らずに、まずは「表示された!」という感動を積み重ねていきましょう。

カテゴリの一覧へ
新着記事
New1
CodeIgniter
CodeIgniterでRESTful API開発!初心者でもわかる全体構成ガイド
New2
Symfony
Symfonyのコントローラとは?作成・構造・役割を初心者向けにやさしく解説!
New3
Symfony
Symfonyでバリデーションメッセージを多言語対応する方法!初心者でもわかる国際化の基本
New4
Symfony
Symfonyのキャッシュ機構の基本を理解しよう(HTTPとアプリ別)
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのシングルアクションコントローラとは?使い方と利点
No.2
Java&Spring記事人気No2
Laravel
Laravelで動的パラメータをルートに渡す方法!初心者にもやさしいルートパラメータの使い方入門
No.3
Java&Spring記事人気No3
Laravel
LaravelのBlade構文まとめ!@if @foreach など基本ディレクティブ解説
No.4
Java&Spring記事人気No4
Laravel
Laravelでキャッシュを使う方法(ファイル・Redis・Memcached)
No.5
Java&Spring記事人気No5
Laravel
Laravelのマイグレーション履歴を確認する方法を徹底解説!migrate:statusの使い方
No.6
Java&Spring記事人気No6
Laravel
Laravelで名前付きルートを設定する方法!初心者でもわかるroute()関数の使い方
No.7
Java&Spring記事人気No7
Laravel
Laravelのルート一覧を確認する方法!初心者でもわかるphp artisan route:listの使い方
No.8
Java&Spring記事人気No8
Symfony
Symfonyの依存性注入(DI)とは?コンストラクタでの注入方法を初心者向けに徹底解説