カテゴリ: CodeIgniter 更新日: 2026/05/28

CodeIgniterでビューにデータを渡す方法を完全ガイド!初心者でもわかる仕組みと使い方

CodeIgniterでビューにデータを渡す方法
CodeIgniterでビューにデータを渡す方法

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

生徒

「CodeIgniterでコントローラーからビューにデータを渡すにはどうすればいいですか?」

先生

「CodeIgniterでは、ビューにデータを渡す方法がいくつか用意されています。どれも簡単に使えるので安心してください。」

生徒

「具体的にはどんな方法がありますか?」

先生

「それでは、基本的な使い方から順番に見ていきましょう!」

1. ビューにデータを渡すとは?

1. ビューにデータを渡すとは?
1. ビューにデータを渡すとは?

CodeIgniterのフレームワークでは、コントローラービューという役割分担があります。コントローラーは処理を担当し、ビューは画面表示を担当します。この二つをつなぐために、コントローラーからビューへデータを渡す必要があります。

例えば、ユーザーの名前をデータベースから取得して画面に表示する場合、コントローラーでデータを取得し、それをビューに渡して表示します。このデータの受け渡しこそが、今回学ぶ重要なポイントです。

データを渡すことで、動的なウェブページを作ることができます。同じビューファイルでも、渡すデータを変えることで表示内容を変更できるため、コードの再利用性が高まります。

2. 基本的なデータの渡し方(配列を使う方法)

2. 基本的なデータの渡し方(配列を使う方法)
2. 基本的なデータの渡し方(配列を使う方法)

CodeIgniterでビューにデータを渡す最も基本的な方法は、配列を使う方法です。配列とは、複数のデータをまとめて扱うための入れ物のようなものです。

コントローラーで配列を作成し、それをビューの読み込み時に第二引数として渡します。配列のキー(名前)がビューの中で変数名として使えるようになります。


// コントローラー(例:app/Controllers/Home.php)
public function index()
{
    $data = array(
        'title' => 'ようこそ',
        'message' => 'CodeIgniterへようこそ!'
    );
    
    return view('welcome_message', $data);
}

上記のコードでは、$dataという配列にtitlemessageという二つのデータを入れています。この配列をview()関数の第二引数に渡すことで、ビュー側でこれらの変数が使えるようになります。

ビューファイル側では、配列のキーがそのまま変数名として展開されます。つまり、$title$messageという変数として利用できるようになるのです。

3. ビューでデータを受け取って表示する

3. ビューでデータを受け取って表示する
3. ビューでデータを受け取って表示する

コントローラーから渡されたデータは、ビューファイルの中でPHPの変数として使用できます。HTMLの中にPHPのコードを埋め込んで、動的にコンテンツを表示します。


<!-- ビュー(例:app/Views/welcome_message.php) -->
<!DOCTYPE html>
<html>
<head>
    <title><?= $title ?></title>
</head>
<body>
    <h1><?= $title ?></h1>
    <p><?= $message ?></p>
</body>
</html>

ビューファイルでは、<?= $title ?>のような短縮記法を使ってデータを出力します。これは<?php echo $title; ?>と同じ意味で、変数の内容を画面に表示します。

このように、コントローラーで準備したデータをビューで受け取り、HTMLに組み込むことで動的なページを作成できます。

4. 複数のデータをまとめて渡す方法

4. 複数のデータをまとめて渡す方法
4. 複数のデータをまとめて渡す方法

実際のウェブアプリケーションでは、一つや二つだけでなく、もっと多くのデータをビューに渡す必要があります。配列を使えば、いくつでもデータをまとめて渡すことができます。


// コントローラー
public function profile()
{
    $data = array(
        'name' => '山田太郎',
        'age' => 25,
        'email' => 'yamada@example.com',
        'address' => '東京都渋谷区',
        'hobbies' => array('読書', '音楽鑑賞', 'プログラミング')
    );
    
    return view('profile_view', $data);
}

この例では、名前、年齢、メールアドレス、住所、趣味といった複数の情報を一つの配列にまとめています。趣味のように複数の項目がある場合は、配列の中に配列を入れることもできます。これを多次元配列といいます。

ビュー側では、渡された配列の中の配列も簡単に扱うことができます。ループ処理を使えば、複数の趣味を順番に表示することも可能です。

5. 連想配列を短縮して書く方法

5. 連想配列を短縮して書く方法
5. 連想配列を短縮して書く方法

CodeIgniterでは、データを渡す際により短く書ける記法も用意されています。特に、変数名とキー名が同じ場合は、コードをシンプルにできます。

PHPの新しいバージョンでは、compact()関数を使うと、変数名を文字列で指定するだけで自動的に配列を作成してくれます。この関数は変数名をそのままキー名とした配列を生成します。


// コントローラー
public function about()
{
    $title = '会社概要';
    $company_name = '株式会社サンプル';
    $established = '2020年4月1日';
    
    // compact関数で変数を配列にまとめる
    return view('about_view', compact('title', 'company_name', 'established'));
}

compact()関数は、指定した変数名を自動的に配列のキーとして使用します。上記の例では、$title$company_name$establishedという三つの変数が、それぞれ同じ名前のキーを持つ配列に変換されます。

この方法を使うと、配列を手動で作成する手間が省けるため、コードがすっきりして読みやすくなります。特に渡す変数が多い場合に便利です。

6. データベースから取得したデータを渡す

6. データベースから取得したデータを渡す
6. データベースから取得したデータを渡す

実際のアプリケーション開発では、データベースから取得した情報をビューに渡すことが多くあります。CodeIgniterのモデルを使ってデータベースからデータを取得し、それをビューに渡す流れを見ていきましょう。

まず、コントローラーでモデルを読み込み、データベースからデータを取得します。取得したデータは通常、配列やオブジェクトの形式で返されるため、そのままビューに渡すことができます。

例えば、ブログ記事の一覧を表示する場合、記事モデルから全ての記事を取得し、それをビューに渡します。ビュー側では、渡された記事データをループ処理で一つずつ表示していきます。

データベース連携を行うことで、管理画面から更新した内容が自動的にウェブページに反映される、本格的な動的サイトを構築できるようになります。

7. ビューで条件分岐を使ってデータを表示する

7. ビューで条件分岐を使ってデータを表示する
7. ビューで条件分岐を使ってデータを表示する

ビューに渡されたデータによって、表示内容を変えたい場合があります。そのような時は、ビューの中でPHPの条件分岐を使います。

例えば、ユーザーがログインしているかどうかで表示を変える場合や、データが空の時に「データがありません」と表示する場合などに使います。ビュー内でもPHPの全ての機能が使えるため、柔軟な表示制御が可能です。

ただし、ビューには複雑なロジックを書きすぎないことが大切です。複雑な処理はコントローラーやモデルで行い、ビューはあくまで表示に専念させるのがベストプラクティスです。

このような役割分担を守ることで、コードが整理され、後からの修正や機能追加がしやすくなります。これをMVC(モデル・ビュー・コントローラー)パターンといい、CodeIgniterの基本的な設計思想です。

8. エスケープ処理の重要性

8. エスケープ処理の重要性
8. エスケープ処理の重要性

ビューにデータを表示する際、エスケープ処理を行うことが非常に重要です。エスケープとは、HTMLタグとして解釈される特殊文字を無害な文字列に変換することです。

CodeIgniterでは、esc()関数を使ってデータをエスケープできます。これにより、ユーザーが入力した悪意のあるスクリプトが実行されるのを防ぎ、クロスサイトスクリプティング(XSS)攻撃から守ることができます。

例えば、掲示板やコメント機能など、ユーザーが入力したテキストを表示する場合は、必ずエスケープ処理を行うようにしましょう。セキュリティは後回しにできない重要な要素です。

短縮記法の<?= esc($variable) ?>を使うことで、安全にデータを出力できます。ユーザー入力に関わるデータは常にエスケープすることを習慣づけましょう。

9. 複数のビューでデータを共有する方法

9. 複数のビューでデータを共有する方法
9. 複数のビューでデータを共有する方法

ウェブサイトでは、ヘッダーやフッターなど、全てのページで共通して表示する要素があります。このような共通データを毎回渡すのは手間がかかります。

CodeIgniterでは、複数のビューで共通して使いたいデータを効率的に管理する方法があります。一つは、ベースコントローラーを作成して、そこで共通データを設定する方法です。

もう一つは、ビューのレイアウト機能を使う方法です。共通部分を別のビューファイルとして作成し、それを各ページで読み込むことで、コードの重複を避けられます。

このような工夫により、サイト全体で一貫性のあるデザインを保ちながら、メンテナンスしやすいコード構造を実現できます。大規模なプロジェクトほど、このような設計の重要性が高まります。

まとめ

まとめ
まとめ

CodeIgniterでビューにデータを渡す仕組みの振り返り

CodeIgniterでウェブアプリケーションを開発する際には コントローラーとビューの役割を理解することがとても重要です。コントローラーは処理を担当し ビューは画面表示を担当します。この二つの役割をしっかり分けることで コードの見通しがよくなり 保守しやすいプログラムになります。

今回の記事では CodeIgniterでコントローラーからビューへデータを渡す方法について詳しく解説しました。ビューにデータを渡すという仕組みは 動的なウェブページを作るうえで欠かせない重要なポイントです。例えばユーザー情報を表示したり データベースから取得した記事一覧を表示したりする場合には 必ずコントローラーからビューへデータを渡す必要があります。

最も基本的な方法は 配列を使ってデータを渡す方法です。コントローラーで連想配列を作成し view関数の第二引数に指定することで ビュー側でそのデータを変数として利用できます。この方法はCodeIgniterの基本的な使い方であり 初心者が最初に覚えるべき重要なテクニックです。

また複数のデータをまとめて渡す場合にも 配列を使うことで効率よく管理できます。名前 年齢 メールアドレス 住所 趣味などの情報を一つの配列にまとめることで ビュー側ではそれぞれの値を簡単に取り出して表示できます。このような仕組みを理解すると CodeIgniterでの開発がとてもスムーズになります。

さらに compact関数を利用すれば 変数を簡単に配列にまとめることもできます。変数名をそのまま配列のキーとして使用できるため コードが短くなり 読みやすいプログラムを書くことができます。特に多くのデータをビューに渡す場合には この方法がとても便利です。

実際の開発では データベースと連携してデータを取得する場面が多くなります。モデルを使ってデータベースから情報を取得し その結果をコントローラーでビューへ渡すことで 動的なウェブサイトを作ることができます。ブログ記事一覧 ユーザー情報 商品一覧など ほとんどのウェブサービスはこの仕組みで作られています。

ビューでは渡されたデータを表示するだけでなく 条件分岐や繰り返し処理を使って柔軟な表示を行うことができます。例えばデータが存在しない場合には データがありませんというメッセージを表示したり ユーザーがログインしている場合だけ特定の情報を表示したりすることが可能です。ただし複雑な処理はビューに書かず コントローラーやモデルに任せることが重要です。

またセキュリティの観点から エスケープ処理も非常に大切です。ユーザー入力をそのまま表示してしまうと クロスサイトスクリプティングという攻撃の原因になる可能性があります。CodeIgniterではesc関数を利用することで 安全にデータを表示することができます。ユーザーが入力したデータを表示する場合は 必ずエスケープ処理を行うようにしましょう。

さらに ヘッダーやフッターのように複数ページで共通して使う部分については 共通ビューを作成して読み込むことで コードの重複を減らすことができます。このような設計を意識すると 大規模なウェブサイトでも整理された構造を維持することができます。

CodeIgniterのMVC構造を理解し コントローラーからビューへデータを渡す方法をしっかり身につけることで 本格的なウェブアプリケーション開発が可能になります。初心者の方はまず配列を使った基本的なデータの渡し方を覚え その後にデータベース連携やレイアウト設計などを学んでいくと理解が深まります。

サンプルプログラムで理解を深める

次は今回学んだ内容を簡単なサンプルコードで振り返ってみましょう。コントローラーでユーザー情報を作成し それをビューに渡して表示する例です。CodeIgniterの基本的なデータ受け渡しの流れを確認することができます。


public function user()
{
    $data = array(
        'name' => '山田太郎',
        'age' => 28,
        'email' => 'taro@example.com'
    );

    return view('user_view', $data);
}

次に ビューファイルでデータを表示するコードです。コントローラーから渡された変数を使って画面に情報を表示します。


<!DOCTYPE html>
<html>
<head>
    <title>ユーザー情報</title>
</head>
<body>
    <h1>ユーザー情報</h1>
    <p>名前 <?= esc($name) ?></p>
    <p>年齢 <?= esc($age) ?></p>
    <p>メール <?= esc($email) ?></p>
</body>
</html>

このように コントローラーで準備したデータをビューで表示することで 動的なウェブページを簡単に作ることができます。CodeIgniterの基本構造を理解すると 開発効率が大きく向上します。

先生と生徒の振り返り会話

生徒

CodeIgniterでは コントローラーからビューにデータを渡すことで画面表示を作るという流れがよく理解できました。配列を使う方法が基本なのですね。

先生

その通りです。CodeIgniterでは view関数の第二引数に配列を渡すことで ビュー側で変数として使えるようになります。これはMVC構造を理解するうえでとても大切なポイントです。

生徒

compact関数を使うと コードを短く書けるという部分も勉強になりました。実際の開発では多くのデータを渡すことが多そうですね。

先生

そうですね。ユーザー情報や記事データなど たくさんのデータをビューに渡す場面はとても多いです。だから配列やcompact関数を上手に使うことが重要になります。

生徒

それから esc関数でエスケープする理由もよく分かりました。セキュリティ対策として必要なのですね。

先生

その理解はとても大切です。ユーザー入力をそのまま表示すると セキュリティ問題につながる可能性があります。安全なウェブアプリケーションを作るためにも エスケープ処理は必ず行いましょう。

生徒

CodeIgniterのMVC構造と コントローラーからビューへデータを渡す流れがよく理解できました。これで動的なページを作れるようになりそうです。

先生

とても良い理解です。今回学んだビューへのデータ渡しは CodeIgniter開発の基礎になります。これをしっかり身につければ データベース連携や本格的なウェブアプリケーション開発にもスムーズに進めるようになります。

カテゴリの一覧へ
新着記事
New2
Symfony
Symfonyのコントローラで404・403エラーを制御する方法を初心者向けに解説!
New3
Symfony
Symfonyで独自イベント(カスタムイベント)を作成する方法をやさしく解説
New4
Laravel
Laravel Sailとは?初心者でもわかるDocker環境構築と使い方の基本
人気記事
No.2
Java&Spring記事人気No2
CodeIgniter
CodeIgniterのCSRF対策を完全解説!フォーム処理のセキュリティ手順
No.3
Java&Spring記事人気No3
Laravel
LaravelでReactコンポーネントを組み込む方法完全ガイド!JSX対応でフロントエンド連携を学ぼう
No.4
Java&Spring記事人気No4
Laravel
Laravelのリレーションを使った検索条件の書き方(whereHas)
No.5
Java&Spring記事人気No5
Symfony
Symfonyでバリデーションをコントローラに組み込む方法を徹底解説!初心者にもやさしい入力チェックの基本
No.6
Java&Spring記事人気No6
Laravel
LaravelのRESTfulコントローラ設計のベストプラクティスを初心者向けにわかりやすく解説
No.7
Java&Spring記事人気No7
Symfony
Symfonyのインストール方法!CLIとComposerの導入手順まとめ
No.8
Java&Spring記事人気No8
Laravel
Laravelのold()関数でフォーム再表示時に値を保持する方法