CodeIgniter 4 フォーム入力バリデーション入門 ― 基本操作とカスタマイズ手法
作成日:2025.04.06
CodeIgniter 4でのフォーム入力値取得とバリデーション処理を、シンプルな実装例を通して解説します。基本的なルール設定から、エラーメッセージの出力、フォームラベルの日本語化やローカライズ方法まで、実践的なテクニックをコンパクトにまとめています。
フォームの入力値を取得する
CodeIgniter 4 では、フォームの入力値を取得するために request
クラスを使用します。
// POSTメソッドの値を取得
$form = $this->request->getPost();
// GETメソッドの値を取得
$form = $this->request->getGet();
// input type="file" の値を取得
$form = $this->request->getFile('file_name');
シンプルなバリデーション処理
バリデーション処理は、以下のように行います。
// バリデーションルールを設定
$validateForm = [
'user_name' => [
'rules' => 'required|alpha_numeric|max_length[255]',
],
'user_file' => [
'rules' => 'uploaded[user_file]|ext_in[user_file,txt]',
],
];
// フォームの値を取得
$form = $this->request->getPost();
$validation = service('validation');
$validation->setRules($validateForm);
// バリデーションを実行し、エラーがあればフォームを再表示
if(!$validation->run($form)){
return view('form');
}
上記のコードでは、フォームの入力値 user_name
と user_file
に対してバリデーションを行なっています。
バリデーションルールは、rules
に指定した文字列を |
で区切ったものです。
- user_name
-
required
: 入力必須alpha_numeric
: 英数字のみmax_length[255]
: 最大255文字
- user_file
-
uploaded[user_file]
: ファイルがアップロードされているかext_in[user_file,txt]
: 拡張子が.txt
のみ
※バリデーションルールとして設定できる項目は、Validation — CodeIgniter 4.6.0 documentation を参照。
バリデーションエラー時の出力
バリデーションエラーの出力は、ビューファイルに以下のように記述することで行なえます。
<?= validation_list_errors(); ?>
上記の記述だけで「user_name は必須項目です。」のように、出力してくれます。
フォームラベルの日本語化
「user_name は必須項目です。」といった出力は「user_name」の部分は input
要素の name
属性をそのまま表示してくれるわけですが、できれば「ユーザー名は必須項目です。」のようにしたいところ。
バリデーションルールの定義を行なう際に、フォームラベルを指定することで実現できます。
$validateForm = [
'user_name' => [
'label' => 'ユーザー名',
'rules' => 'required|alpha_numeric|max_length[255]',
],
'user_file' => [
'label' => 'テキストファイル',
'rules' => 'uploaded[user_file]|ext_in[user_file,txt]',
],
];
これで、バリデーションエラー時に「ユーザー名は必須項目です。」のように出力してくれます。
フォームラベルのローカライズ
ラベルを直接記述するのではなく、言語設定ファイルを作成してローカライズをすることも可能です。
日本語用言語設定ファイルは、app/Language/ja/
ディレクトリに準備します。
例: app/Language/ja/Fields.php
を作成し、以下のように記述。
<?php
return [
'user_name' => 'ユーザー名',
'user_file' => 'テキストファイル',
];
上記のように、app/Language/ja/Fields.php
を作成したら、バリデーションルールの定義を以下のように修正します。
$validateForm = [
'user_name' => [
'label' => 'Fields.user_name',
'rules' => 'required|alpha_numeric|max_length[255]',
],
'user_file' => [
'label' => 'Fields.user_file',
'rules' => 'uploaded[user_file]|ext_in[user_file,txt]',
],
];
エラー出力フォーマットのカスタマイズ
validation_list_errors
に引数としてテンプレート名を指定して、エラー出力フォーマットのカスタマイズすることができます。
<?= validation_list_errors('error_list'); ?>
ビューファイルに上記のように記述した上で、app/Config/Validation.php
を以下のように修正。
public array $templates = [
'list' => 'CodeIgniter\Validation\Views\list',
'single' => 'CodeIgniter\Validation\Views\single',
'error_list' => 'error_list', // カスタマイズしたエラーメッセージのリスト表示用テンプレート
];
app/Config/Validation.php
で指定したテンプレートを app/Views/error_list.php
として作成。
<?php if(!empty($errors)): ?>
<div class="error-list-class">
<?php foreach($errors as $e): ?>
<p class="error-class"><?= esc($e); ?></p>
<?php endforeach; ?>
</div>
<?php endif; ?>
エラー内容は $errors
に配列として入っているので、上記のように foreach
で出力できます。

奈良市を拠点に、25年以上の経験を持つフリーランスWebエンジニア、阿部辰也です。
これまで、ECサイトのバックエンド開発や業務効率化システム、公共施設の予約システムなど、多彩なプロジェクトを手がけ、企業様や制作会社様のパートナーとして信頼を築いてまいりました。
【制作会社・企業様向けサポート】
Webシステムの開発やサイト改善でお困りの際は、どうぞお気軽にご相談ください。小さな疑問から大規模プロジェクトまで、最適なご提案を心を込めてさせていただきます。
ぜひ、プロフィールやWeb制作会社様向け業務案内、一般企業様向け業務案内もご覧くださいね。
CodeIgniter 4 モデルの基本 ― CRUD操作とデータ操作ロジックの解説
2025.04.04
本記事では、CodeIgniter 4 のモデルの基本概念から、実際のCRUD(Create, Read, Update, Delete)操作の実装方法までを詳しく解説します。モデルを用いたデータベース操作の簡略化や、ビジネスロジックの分離手法、さらにコントローラとの連携方法など、実践的なコード例を交えながら、効率的なアプリケーション開発に必要な知識を提供します。
CodeIgniter4 フォームヘルパー入門 ― HTMLフォーム生成の実践解説
2025.03.25
本記事では、CodeIgniter4 のフォームヘルパーを活用して、HTMLフォームを効率的に生成する手法を解説します。基本的な使い方から、CSRF対策や各種入力要素の生成、バリデーション連携の実践例まで、具体的なコードサンプルを交えながら分かりやすく説明しています。
CodeIgniter 4 URIルーティング入門 ― 手動設定と改善版自動ルーティングの徹底比較
2025.03.22
本記事では、CodeIgniter 4 の URIルーティング機能について、手動ルーティングと自動ルーティング(改善版)の違いや特徴を徹底解説しています。各設定方法の具体例や、ルーティング設定確認の手順を詳しく説明し、開発効率やセキュリティ、柔軟性の観点から最適な選択肢を検討するための情報を提供します。
Windows環境でのCodeIgniter 4.6.0 セットアップガイド―基本設定からセキュリティ対策まで
2025.03.20
CodeIgniter 4.6.0のXAMPP環境へのインストール手順を詳しく解説します。PHPの環境設定から、Composerによるインストール、.envファイルの設定、そしてCSRFやXSS対策などのセキュリティ設定まで、実運用を見据えた導入ガイドをお届けします。