このエントリーをはてなブックマークに追加

更新日: 2016年2月25日

実行時間: 0.0352

ビュー

 CodeIgniterのビューは、基本的には、HTMLコードにPHPコードを埋め込む記述スタイルとなります。
コントローラからのビューの「呼び出し」方、データの「受け渡し」方の2つを覚えるだけとなります。

 もし、HTMLテンプレートファイルにPHPコードを埋め込みたくない場合は、CodeIgniterの標準ライブラリの 「 CI_Parser 」ライブラリクラスを利用することで、 簡易的なテンプレートエンジンとしてビューに利用することができます。
 「 CI_Parser 」のページも参考にしてみてください。

ビューファイルの設置場所・ファイル名

  ビューファイルの設置場所は「application/views」ディレクトリ配下となります。
「application/views」ディレクトリにサブディレクトリを作成して、その配下に設置することも可能です。 ビューファイルは「header.php」「menu.php」「footer.php」のようにパーツごとに作成し、 個別に呼び出すこともできます。

ビューファイル

 ビューファイルは、HTMLコードの中にPHPのコードを埋め込んでいく形となります。

  • member_list.php
  • <div>
      <ul>
      <?php foreach($members as $m) : ?>
        <li><?php echo "$m['firstname'] $m['surname']" ; ?></li>
      <?php endforeach ; ?>
      </ul>
    </div>

 ビューファイル内でのPHPの記述には、「if ~ endif」「foreach ~ endforeach」「while ~ endwhile」構文を使うと読みやすくなると思います。

    <?php if ($m['age'] > 19 ) : ?>
      <?php echo "大人" ; ?>
    <?php else : ?>
      <?php echo "小人" ; ?>
    <?php endinf ; ?>

ビューの利用 一番上に戻る

 ビューの利用は、コントローラから「$this->load->view('ビュー名');」としてロードします。 「ビュー名は」ファイル名から「.php」を除いたものとなります。

  • ビューファイル配置
  • application/views/
            |- header.php
            |- contents/member_info.php
            |- footer.php
  • コントローラ
  • $this->load->view('header');
    $this->load->view('contents/member_info');
    $this->load->view('footer');

データの受け渡し 一番上に戻る

 モデルなどで準備したデータをビューに受け渡すには、「$this->load->view()」の第2引数にセットします。 データは、連想配列、または、オブジェクトを受け渡すことが可能です。
なお、オブジェクトを受け渡すとオブジェクトのクラス変数が配列の要素に変換され受け渡されます。

    $member_info = array(
        'firstname' => '山田',
        'surname' => '太郎',
        'age' => 29,
    );
    $this->load->view('contents/member_info', $member_info);

データの利用 一番上に戻る

 ビューに受け渡された連想配列データは、ビューの中で「連想配列の要素名」を変数として利用します。
例を見た方が理解が簡単でしょう。

  • コントローラ
  • $member_info = array(
        'firstname' => '山田',
        'surname' => '太郎',
        'age' => 29,
    );
    $this->load->view('contents/member_info', $member_info);
  • contents/member_info.php
  • <ul>
      <li><?php echo $firstname ; ?></li>
      <li><?php echo $surname ; ?></li>
      <li><?php echo $age ; ?></li>
    </ul>