Symfoware

Symfowareについての考察blog

CodeIgniter 3 Viewの使い方(General Topics - Views)

CodeIgniter User Guide

General TopicsのViewsについて調べてみます。
Views


Views



ビューは、1ページ全体を定義しても構いませんし、
ヘッダー、フッター、サイドバーのようなページの構成要素の1部を定義しても構いません。

ビューは直接は呼び出されません。コントローラーから呼び出して使用します。



Creating a View



ビューは、application/views/配下に配置するルールです。
application/views/blogview.phpを作成し、以下の内容を記載します。


・blogview.php


  1. <html>
  2. <head>
  3.     <title>My Blog</title>
  4. </head>
  5. <body>
  6.     <h1>Welcome to my Blog!</h1>
  7. </body>
  8. </html>






Loading a View



ビューを表示するには、コントローラーで


  1. $this->load->view('name');



とします。
※名前はファイル名です。「.php」という拡張子は不要です。


上記で作成したblogview.phpを表示してみます。

application/controllers/Blog.phpファイルを作成。
こんな感じでビューを呼び出します。


・Blog.php


  1. <?php
  2. class Blog extends CI_Controller {
  3.     
  4.     public function index() {
  5.         $this->load->view('blogview');
  6.     }
  7.     
  8. }




ブラウザで/blog/にアクセスすると、blogview.phpの内容が表示されました。

535_01.png





Loading multiple views



コントローラーからは複数のビューが呼び出せます。
※これはチュートリアルでも登場しました。
CodeIgniter 3のチュートリアル1 Static pages


application/views/にheader.phpとfooter.phpを作成します。

・header.php


  1. <html>
  2. <head>
  3.     <title>My Blog</title>
  4. </head>
  5. <body>
  6. <div>--- header ---</div>




・footer.php


  1. <div>--- footer ---</div>
  2. </body>
  3. </html>




blogview.phpは以下のように変更します。

・blogview.php


  1. <h1>Welcome to my Blog!</h1>





これら3つのビューを結合して表示するコントローラーは以下のようになります。

・Blog.php


  1. <?php
  2. class Blog extends CI_Controller {
  3.     
  4.     public function index() {
  5.         $this->load->view('header');
  6.         $this->load->view('blogview');
  7.         $this->load->view('footer');
  8.     }
  9.     
  10. }




表示したい順にビューをロードすればよいです。

535_02.png




Storing Views within Sub-directories



application/views/にフォルダを作成。
その中にビューファイルを配置しても構いません。

その場合、コントローラーからビューの呼び出しは
[サブディレクトリ名]/[ファイル名]
となります。


  1. $this->load->view('directory_name/file_name');







Adding Dynamic Data to the View



webアプリケーションであれば、いつも同じ内容のページを表示するのではなく、
ユーザー操作により表示内容が変わると思います。

ビューに対してデータを流しこむには
・array
・object
いずれかの値を第二引数に指定します。

arrayの場合の例


  1. $data = array(
  2.     'title' => 'My Title',
  3.     'heading' => 'My Heading',
  4.     'message' => 'My Message'
  5. );
  6. $this->load->view('blogview', $data);




オブジェクトの場合の例。


  1. $data = new Someclass();
  2. $this->load->view('blogview', $data);




blogviewに「title」と「heading」というキーで値を設定してみます。

・Blog.php


  1. <?php
  2. class Blog extends CI_Controller {
  3.     
  4.     public function index() {
  5.         
  6.         // arrayに渡したい値を設定
  7.         $data['title'] = "My Real Title";
  8.         $data['heading'] = "My Real Heading";
  9.         
  10.         // view呼び出しの第二引数にarrayを設定
  11.         $this->load->view('blogview', $data);
  12.         
  13.     }
  14.     
  15. }




ビュー側では、コントローラーから渡された値を表示します。

・blogview.php


  1. <html>
  2. <head>
  3.     <!-- コントローラーから受け取った値を表示 -->
  4.     <title><?php echo $title;?></title>
  5. </head>
  6. <body>
  7.     <h1><?php echo $heading;?></h1>
  8. </body>
  9. </html>




535_03.png





Creating Loops



ビューでリストの値をループしながら表示したい場合があると思います。
そんな場合は、foreach・endforeachを使用します。

・Blog.php


  1. <?php
  2. class Blog extends CI_Controller {
  3.     
  4.     public function index() {
  5.         
  6.         // ループで表示したいリスト
  7.         $data['todo_list'] = array('Clean House', 'Call Mom', 'Run Errands');
  8.         
  9.         $data['title'] = "My Real Title";
  10.         $data['heading'] = "My Real Heading";
  11.         
  12.         // view呼び出しの第二引数にarrayを設定
  13.         $this->load->view('blogview', $data);
  14.         
  15.     }
  16.     
  17. }




・blogview.php


  1. <html>
  2. <head>
  3.     <!-- コントローラーから受け取った値を表示 -->
  4.     <title><?php echo $title;?></title>
  5. </head>
  6. <body>
  7.     <h1><?php echo $heading;?></h1>
  8.     
  9.     <h3>My Todo List</h3>
  10.     
  11.     <!-- foreachでリストの内容を表示 -->
  12.     <ul>
  13.     <?php foreach ($todo_list as $item):?>
  14.         <li><?php echo $item;?></li>
  15.     <?php endforeach;?>
  16.     </ul>
  17.     
  18. </body>
  19. </html>




535_04.png


※foreach,endforeachの他に使える構文として、
if,elseif,else,endifなどがあります。
Alternate PHP Syntax for View Files




Returning views as data



ビューで生成したデータをそのまま表示するのではなく、
文字列として取得したい場合、第三引数に「true」を指定します。

・Blog.php


  1. <?php
  2. class Blog extends CI_Controller {
  3.     
  4.     public function index() {
  5.         
  6.         // ループで表示したいリスト
  7.         $data['todo_list'] = array('Clean House', 'Call Mom', 'Run Errands');
  8.         
  9.         $data['title'] = "My Real Title";
  10.         $data['heading'] = "My Real Heading";
  11.         
  12.         // view呼び出しの第三引数にtrueを設定
  13.         $html = $this->load->view('blogview', $data, true);
  14.         echo $html;
  15.     }
  16.     
  17. }




メールの本文など、viewの機能でフォーマットした文字列が
ほしい時に便利な機能ですね。




CodeIgniter 3のユーザーガイド(User Guide)まとめ

関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2015/01/25(日) 10:19:29|
  2. PHP
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<CodeIgniter 3 Modelsの使い方(General Topics - Models) | ホーム | CodeIgniter 3 予約語について(General Topics - Reserved Names)>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1598-12f09d90
この記事にトラックバックする(FC2ブログユーザー)