カテゴリ: CodeIgniter 更新日: 2026/04/26

CodeIgniterでフォーム作成!ビューとテンプレートの基本を初心者向けに徹底解説

CodeIgniterでフォーム用ビューを作成する方法
CodeIgniterでフォーム用ビューを作成する方法

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

生徒

「ホームページでお問い合わせフォームを作りたいのですが、CodeIgniterではどうやって画面を作るんですか?」

先生

「CodeIgniterでは『ビュー(View)』という仕組みを使って、見た目の画面を作ります。特にフォームは基本となる大切な部分ですね。」

生徒

「プログラム初心者でも、綺麗な入力画面を自作できるようになりますか?」

先生

「もちろんです!まずは、ブラウザに文字や入力欄を表示する準備から一緒に始めていきましょう!」

1. ビュー(View)とテンプレートの役割を知ろう

1. ビュー(View)とテンプレートの役割を知ろう
1. ビュー(View)とテンプレートの役割を知ろう

プログラミングの世界、特にCodeIgniter(コードイグナイター)のようなフレームワークでは、役割分担がとても重要です。ビュー(View)とは、銀行の窓口のようなものです。利用者が目にするカウンター、書類、ペンなどが置いてある「場所」そのものがビューにあたります。

PHPで直接HTMLを書くこともできますが、CodeIgniterを使うと「データの計算をする場所」と「画面に表示する場所」をきれいに分けることができます。これを専門用語でMVCモデルと呼びますが、今は「画面担当がビューなんだな」と覚えておけば大丈夫です。パソコンに詳しくない方でも、料理の「お皿(ビュー)」と「レシピ(プログラム)」を分けて考えるイメージを持つと分かりやすいでしょう。

テンプレートとは、共通の看板やメニュー表のようなものです。どのページでも同じ「ヘッダー(上の部分)」や「フッター(下の部分)」を使い回すことで、効率よくWebサイトを作ることができます。お問い合わせフォームを作成する際も、このビューの仕組みを使いこなすことが第一歩となります。

2. フォームを表示するためのコントローラー準備

2. フォームを表示するためのコントローラー準備
2. フォームを表示するためのコントローラー準備

ビューを表示するためには、指示を出す「司令塔」が必要です。これがコントローラーです。司令塔が「このビューを表示して!」と命令を出すことで、初めて私たちのブラウザに画面が映し出されます。

まずは、FormController.phpというファイルを作って、ビューを呼び出す命令を書いてみましょう。プログラム未経験の方は、まず「決まった呪文」を書くことから慣れていけば問題ありません。


namespace App\Controllers;

use CodeIgniter\Controller;

class FormController extends Controller
{
    public function index()
    {
        // 'contact_form' という名前のビューファイルを読み込む指示
        return view('contact_form');
    }
}

上記のコードにある view('contact_form') という部分が重要です。これは「contact_formという名前のHTMLファイルを画面に出してね」というお願いをしています。これだけで、プログラムが画面を表示する準備を整えてくれます。最初は難しいかもしれませんが、一行ずつ「何をお願いしているか」を読み解いていくのが上達のコツです。

3. 基本的なHTMLフォームビューの作成

3. 基本的なHTMLフォームビューの作成
3. 基本的なHTMLフォームビューの作成

次に、実際にユーザーが文字を入力する「見た目」の部分、つまりビューファイルを作成します。CodeIgniterでは、app/Views というフォルダの中にファイルを作ります。ファイル名は contact_form.php とします。

ここでは、お名前を入力するためのテキストボックスと、送信するためのボタンを用意します。HTMLを知らなくても、以下のコードを貼り付けるだけで基本的な形が完成します。入力欄を作るには input タグという部品を使います。


<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>お問い合わせフォーム</title>
</head>
<body>
    <h1>お問い合わせ</h1>
    <form action="/form/submit" method="post">
        <p>
            お名前:<br>
            <input type="text" name="username">
        </p>
        <p>
            ご用件:<br>
            <textarea name="message"></textarea>
        </p>
        <button type="submit">送信する</button>
    </form>
</body>
</html>

プログラムの中で method="post" と書かれているのは、「荷物を段ボールに入れて、中身が見えないように安全に送る」という配送方法の指定のようなものです。これによって、入力された個人情報を安全にサーバーへ届けることができます。パソコンを触り始めたばかりの方でも、この「お作法」を覚えるだけでプロのようなフォームの基礎が作れます。

4. CodeIgniterの便利なフォームヘルパーを使ってみよう

4. CodeIgniterの便利なフォームヘルパーを使ってみよう
4. CodeIgniterの便利なフォームヘルパーを使ってみよう

CodeIgniterには、HTMLをより簡単に、そして安全に書くための「ヘルパー」という便利な道具箱が用意されています。これを使うと、複雑なHTMLコードを覚えなくても、PHPの短い命令で入力欄を作ることができます。

ヘルパーを使う最大のメリットは、セキュリティ対策が自動で行われる点です。悪意のある人がフォームから変なプログラムを送り込んでくる「攻撃」を防ぐ仕組み(CSRF対策など)が簡単に導入できます。初心者こそ、このヘルパー機能を活用して安全なサイト作りを目指しましょう。


// ヘルパーを読み込む魔法の言葉
helper('form');

// フォームの開始タグを生成(自動的にセキュリティ対策が含まれる)
echo form_open('form/confirm');

echo form_label('メールアドレス', 'email');
echo form_input('email', '', ['id' => 'email', 'placeholder' => 'example@mail.com']);

echo form_submit('submit', '確認画面へ');

// フォームの閉じタグ
echo form_close();

実行結果は以下のようになります。複雑なHTMLが一行のPHPコードで生成されるのは魔法のようですね。プログラミングの面白さは、このように「面倒なことを楽にする道具」がたくさんあるところです。


<form action="http://localhost/form/confirm" method="post" accept-charset="utf-8">
    <label for="email">メールアドレス</label>
    <input type="text" name="email" value="" id="email" placeholder="example@mail.com">
    <input type="submit" name="submit" value="確認画面へ">
</form>

5. テンプレートを使ってデザインを共通化する

5. テンプレートを使ってデザインを共通化する
5. テンプレートを使ってデザインを共通化する

複数のページがあるWebサイトを作るとき、すべてのページに同じメニューバーや著作権表示(コピーライト)を書くのは大変です。そこで登場するのがテンプレート(レイアウト)という考え方です。これは、写真の「フォトフレーム」のようなものです。中身の写真(各ページのコンテンツ)だけを入れ替えて、外側の枠(デザイン)は使い回します。

CodeIgniterでは $this->extend() という命令を使って、あらかじめ作っておいた共通のデザイン枠を呼び出すことができます。これにより、一部を修正するだけでサイト全体の見た目を一気に変えることができるようになります。修正漏れがなくなるので、プロの現場でも必ず使われる手法です。


<?= $this->extend('layouts/main') ?>

<?= $this->section('content') ?>
    <h2>フォームの入力ページ</h2>
    <p>以下の項目を正しく入力してください。</p>
    <form>
        </form>
<?= $this->endSection() ?>

この仕組みを使うことで、ヘッダーのロゴを変えたいときに、100枚あるページを一枚ずつ直す必要がなくなります。たった一枚のテンプレートファイルを直すだけで、すべてのページが同時に更新されます。パソコン操作に慣れていない方でも、この「一括で変わる便利さ」を体験すると、プログラミングの凄さが実感できるはずです。

6. フォームから送られたデータを受け取る方法

6. フォームから送られたデータを受け取る方法
6. フォームから送られたデータを受け取る方法

ビューで作ったフォームに利用者が入力し、ボタンを押した後の動きも見てみましょう。データを受け取るのは、再び司令塔であるコントローラーの仕事です。受け取ったデータが空っぽではないか、文字数が多すぎないかなどをチェック(バリデーション)します。

例えば、お名前が入力されていない場合に「名前を入力してください!」と赤い文字で警告を出すのも、ビューとコントローラーの連携プレーです。初心者のうちは、まず「送られたデータがちゃんと届いているか」を確認するプログラムを書いてみましょう。


public function submit()
{
    // 入力された名前を受け取って変数に入れる
    $name = $this->request->getPost('username');

    // 画面に「こんにちは、〇〇さん!」と表示するデータを準備
    $data = [
        'user_name' => $name
    ];

    // 結果を表示するビューにデータを渡す
    return view('form_result', $data);
}

このように、ビューで作った入力欄の name="username" という名前を鍵にして、コントローラーでデータを取り出します。これは、郵便受けに名前を書いておき、その名前に届いた手紙を取り出す作業によく似ています。情報の受け渡しがスムーズにできるようになると、Webアプリケーション開発がぐっと楽しくなります。

7. 入力エラーを表示する親切なビューの作り方

7. 入力エラーを表示する親切なビューの作り方
7. 入力エラーを表示する親切なビューの作り方

ユーザーが入力ミスをしたときに、何が間違っているのかを教えてあげるのは、とても親切な設計です。CodeIgniterには、エラーメッセージを自動でまとめて表示する機能があります。これをビューの中に一行書き足すだけで、使いやすいフォームに進化します。

「エラーが出る」というのは、プログラムが正常に動いている証拠でもあります。最初から完璧に入力してもらうことを期待するのではなく、間違えたときにどう助けるかを考えるのが、良いプログラマーへの近道です。パソコン操作が苦手なユーザーの気持ちに寄り添った画面作りを心がけましょう。


<?= validation_list_errors() ?>

<form action="/submit" method="post">
    </form>

例えば、「メールアドレスの形式が違います」や「パスワードが短すぎます」といったメッセージがこの場所に表示されます。ビューは単に見た目を作るだけでなく、ユーザーとの「対話」を支える重要な役割を担っているのです。これらを組み合わせることで、初心者でも立派なお問い合わせシステムや会員登録画面を構築することができるようになります。

カテゴリの一覧へ
新着記事
New2
Symfony
SymfonyでAPI向けにカスタムエラーメッセージを返す方法を解説!初心者でも安心のバリデーション基礎
New3
Symfony
Symfonyの動的フォームフィールド追加・削除を完全ガイド!初心者でもわかるフォーム操作入門
New4
Laravel
LaravelのMailableクラスの使い方を完全解説!初心者でもできるメール送信管理
人気記事
No.1
Java&Spring記事人気No1
CodeIgniter
CodeIgniterのセッション管理を徹底解説!値を保存・取得する基本操作
No.2
Java&Spring記事人気No2
Laravel
Laravelのnow()・today()関数の使い方完全ガイド!初心者でもわかる日時処理と日付操作
No.3
Java&Spring記事人気No3
Laravel
Laravelのabort()関数でエラーを返す方法!初心者向け完全ガイド
No.4
Java&Spring記事人気No4
Symfony
Symfony Twig入門|条件分岐とループをやさしく理解するテンプレート活用術
No.5
Java&Spring記事人気No5
Laravel
Laravelのインストール方法まとめ!ComposerとLaravel Installerの使い方
No.6
Java&Spring記事人気No6
Laravel
Laravelの日付バリデーションの使い方を完全解説!初心者でも安心の丁寧ガイド
No.7
Java&Spring記事人気No7
Laravel
Laravelの@eachディレクティブで簡単に繰り返しテンプレートを表示する方法
No.8
Java&Spring記事人気No8
Symfony
Symfonyのコントローラで例外処理を追加する方法をやさしく解説!初心者でも安心して学べる