CodeIgniterでフォームのバリデーションエラーを表示する方法!初心者向け徹底解説
生徒
「お問い合わせフォームを作っているのですが、入力漏れがあった時に『名前を入力してください』といったエラーメッセージを自動で出す方法ってありますか?」
先生
「CodeIgniter(コードイグナイター)には『バリデーション』という便利な機能があって、それを使えば簡単にエラーメッセージを表示できるんですよ。」
生徒
「バリデーション……難しそうな言葉ですね。パソコン初心者でも設定できますか?」
先生
「大丈夫です!ルールを決めて、表示用の命令を一行書くだけです。基本から順番に、ゆっくり解説していきますね。」
1. バリデーションとエラーメッセージの基本
プログラミングの世界でよく聞くバリデーション(Validation)とは、日本語で「検証」や「確認」という意味です。例えば、会員登録フォームでメールアドレスの欄が空っぽだったり、数字を入れる場所に漢字が入っていたりしたら困りますよね。そういった「入力ミス」をプログラムが自動でチェックし、「ここが間違っていますよ!」と教えてくれる仕組みをバリデーションと呼びます。
PHPのフレームワークであるCodeIgniterを使うと、このチェック作業を非常に効率よく行うことができます。自分で一つずつ「もし空だったら……」と書かなくても、あらかじめ用意されたルールを適用するだけで、適切なエラーメッセージを画面に表示させることが可能です。これはウェブサイト制作において、ユーザーが迷わず入力できるようにするための「おもてなし」のような機能だと言えます。
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. 画面にエラーメッセージを表示させる魔法の関数
ルールを決めただけでは、画面には何も表示されません。次に、実際の入力画面(これをビューと呼びます)に、「エラーがあったらここに表示してね」という指示を書く必要があります。ここで登場するのが、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. 各入力欄のすぐそばにエラーを出したい場合
「まとめて一番上に表示されるのもいいけれど、入力欄のすぐ下に個別にメッセージを出したい!」という場合もありますよね。その方が、どこを直せばいいのか一目でわかるため、利用者にとって優しい親切な設計になります。そんな時に使うのが、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. 入力した内容を消さない「値の保持」機能
エラーが表示されたときに、せっかく入力した文字がすべて消えてしまったら、ユーザーはガッカリしてしまいますよね。もう一度最初から入力し直すのはとても大変です。そこで、エラーが出ても「さっき入力した内容はそのまま残しておく」という工夫が必要です。これを値の保持(リポピュレート)と呼びます。
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. エラーメッセージを自分好みの日本語に変える方法
CodeIgniterの初期設定では、エラーメッセージが英語で表示されることがあります。例えば、「The username field is required.」といった具合です。これを「お名前は必ず入力してくださいね」といった親しみやすい日本語に変更することも可能です。
言語ファイルを日本語化する方法もありますが、コントローラーの中で個別にメッセージを指定することもできます。これを「カスタムエラーメッセージ」と呼びます。自分たちのサービスに合わせて、言葉遣いを工夫してみるのも面白いですよ。
$rules = [
'username' => [
'label' => 'ユーザー名',
'rules' => 'required',
'errors' => [
'required' => '{field}を忘れているみたいですよ!入力してくださいね。',
],
],
];
if (!$this->validate($rules)) {
return view('contact_form');
}
このように設定すると、実行結果は以下のようになります。
ユーザー名を忘れているみたいですよ!入力してくださいね。
システム的な冷たいメッセージではなく、温かみのある言葉に変えることで、ユーザーに安心感を与えることができます。プログラミングは単なるコードの羅列ではなく、画面の向こう側にいる人と対話するための道具なのです。
7. なぜフォーム処理にフレームワークを使うのか
最後に、なぜ自力でゼロから作らずにCodeIgniterのような「フレームワーク」を使うのかについてお話しします。もしフレームワークを使わずにフォームのチェック機能を作ろうとすると、非常に多くのコードを書かなければなりません。空チェック、文字数チェック、不正な記号のチェック……。これらをすべて手作業でやると、どこかに穴(セキュリティの弱点)ができやすくなります。
CodeIgniterは、世界中のプログラマーが長年使ってきた「安全な部品」が詰まった道具箱です。その道具を正しく使うことで、初心者でもプロ並みの安全で使いやすいフォームを作ることができるようになります。エラーメッセージを正しく表示させることは、その大きな第一歩です。焦らずに、まずは「表示された!」という感動を積み重ねていきましょう。