技術資料

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_nameuser_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)操作の実装方法までを詳しく解説します。モデルを用いたデータベース操作の簡略化や、ビジネスロジックの分離手法、さらにコントローラとの連携方法など、実践的なコード例を交えながら、効率的なアプリケーション開発に必要な知識を提供します。

CodeIgniter PHP

CodeIgniter4 フォームヘルパー入門 ― HTMLフォーム生成の実践解説

2025.03.25

本記事では、CodeIgniter4 のフォームヘルパーを活用して、HTMLフォームを効率的に生成する手法を解説します。基本的な使い方から、CSRF対策や各種入力要素の生成、バリデーション連携の実践例まで、具体的なコードサンプルを交えながら分かりやすく説明しています。

CodeIgniter PHP

CodeIgniter 4 URIルーティング入門 ― 手動設定と改善版自動ルーティングの徹底比較

2025.03.22

本記事では、CodeIgniter 4 の URIルーティング機能について、手動ルーティングと自動ルーティング(改善版)の違いや特徴を徹底解説しています。各設定方法の具体例や、ルーティング設定確認の手順を詳しく説明し、開発効率やセキュリティ、柔軟性の観点から最適な選択肢を検討するための情報を提供します。

CodeIgniter PHP

Windows環境でのCodeIgniter 4.6.0 セットアップガイド―基本設定からセキュリティ対策まで

2025.03.20

CodeIgniter 4.6.0のXAMPP環境へのインストール手順を詳しく解説します。PHPの環境設定から、Composerによるインストール、.envファイルの設定、そしてCSRFやXSS対策などのセキュリティ設定まで、実運用を見据えた導入ガイドをお届けします。

CodeIgniter PHP

阿部辰也へのお仕事の依頼・お問い合わせ

軽いご相談もお気軽にどうぞ!

個人情報の取り扱いについて *必須 プライバシーポリシーをご確認いただき、同意いただける場合は「同意する」にチェックをしてください。

keyboard_double_arrow_up
TOP