CodeIgniter 3 Viewの使い方(General Topics - Views)
CodeIgniter User GuideGeneral TopicsのViewsについて調べてみます。
Views
Views
ビューは、1ページ全体を定義しても構いませんし、
ヘッダー、フッター、サイドバーのようなページの構成要素の1部を定義しても構いません。
ビューは直接は呼び出されません。コントローラーから呼び出して使用します。
Creating a View
ビューは、application/views/配下に配置するルールです。
application/views/blogview.phpを作成し、以下の内容を記載します。
・blogview.php
- <html>
- <head>
- <title>My Blog</title>
- </head>
- <body>
- <h1>Welcome to my Blog!</h1>
- </body>
- </html>
Loading a View
ビューを表示するには、コントローラーで
- $this->load->view('name');
とします。
※名前はファイル名です。「.php」という拡張子は不要です。
上記で作成したblogview.phpを表示してみます。
application/controllers/Blog.phpファイルを作成。
こんな感じでビューを呼び出します。
・Blog.php
- <?php
- class Blog extends CI_Controller {
- public function index() {
- $this->load->view('blogview');
- }
- }
ブラウザで/blog/にアクセスすると、blogview.phpの内容が表示されました。

Loading multiple views
コントローラーからは複数のビューが呼び出せます。
※これはチュートリアルでも登場しました。
CodeIgniter 3のチュートリアル1 Static pages
application/views/にheader.phpとfooter.phpを作成します。
・header.php
- <html>
- <head>
- <title>My Blog</title>
- </head>
- <body>
- <div>--- header ---</div>
・footer.php
- <div>--- footer ---</div>
- </body>
- </html>
blogview.phpは以下のように変更します。
・blogview.php
- <h1>Welcome to my Blog!</h1>
これら3つのビューを結合して表示するコントローラーは以下のようになります。
・Blog.php
- <?php
- class Blog extends CI_Controller {
- public function index() {
- $this->load->view('header');
- $this->load->view('blogview');
- $this->load->view('footer');
- }
- }
表示したい順にビューをロードすればよいです。

Storing Views within Sub-directories
application/views/にフォルダを作成。
その中にビューファイルを配置しても構いません。
その場合、コントローラーからビューの呼び出しは
[サブディレクトリ名]/[ファイル名]
となります。
- $this->load->view('directory_name/file_name');
Adding Dynamic Data to the View
webアプリケーションであれば、いつも同じ内容のページを表示するのではなく、
ユーザー操作により表示内容が変わると思います。
ビューに対してデータを流しこむには
・array
・object
いずれかの値を第二引数に指定します。
arrayの場合の例
- $data = array(
- 'title' => 'My Title',
- 'heading' => 'My Heading',
- 'message' => 'My Message'
- );
- $this->load->view('blogview', $data);
オブジェクトの場合の例。
- $data = new Someclass();
- $this->load->view('blogview', $data);
blogviewに「title」と「heading」というキーで値を設定してみます。
・Blog.php
- <?php
- class Blog extends CI_Controller {
- public function index() {
- // arrayに渡したい値を設定
- $data['title'] = "My Real Title";
- $data['heading'] = "My Real Heading";
- // view呼び出しの第二引数にarrayを設定
- $this->load->view('blogview', $data);
- }
- }
ビュー側では、コントローラーから渡された値を表示します。
・blogview.php
- <html>
- <head>
- <!-- コントローラーから受け取った値を表示 -->
- <title><?php echo $title;?></title>
- </head>
- <body>
- <h1><?php echo $heading;?></h1>
- </body>
- </html>

Creating Loops
ビューでリストの値をループしながら表示したい場合があると思います。
そんな場合は、foreach・endforeachを使用します。
・Blog.php
- <?php
- class Blog extends CI_Controller {
- public function index() {
- // ループで表示したいリスト
- $data['todo_list'] = array('Clean House', 'Call Mom', 'Run Errands');
- $data['title'] = "My Real Title";
- $data['heading'] = "My Real Heading";
- // view呼び出しの第二引数にarrayを設定
- $this->load->view('blogview', $data);
- }
- }
・blogview.php
- <html>
- <head>
- <!-- コントローラーから受け取った値を表示 -->
- <title><?php echo $title;?></title>
- </head>
- <body>
- <h1><?php echo $heading;?></h1>
- <h3>My Todo List</h3>
- <!-- foreachでリストの内容を表示 -->
- <ul>
- <?php foreach ($todo_list as $item):?>
- <li><?php echo $item;?></li>
- <?php endforeach;?>
- </ul>
- </body>
- </html>

※foreach,endforeachの他に使える構文として、
if,elseif,else,endifなどがあります。
Alternate PHP Syntax for View Files
Returning views as data
ビューで生成したデータをそのまま表示するのではなく、
文字列として取得したい場合、第三引数に「true」を指定します。
・Blog.php
- <?php
- class Blog extends CI_Controller {
- public function index() {
- // ループで表示したいリスト
- $data['todo_list'] = array('Clean House', 'Call Mom', 'Run Errands');
- $data['title'] = "My Real Title";
- $data['heading'] = "My Real Heading";
- // view呼び出しの第三引数にtrueを設定
- $html = $this->load->view('blogview', $data, true);
- echo $html;
- }
- }
メールの本文など、viewの機能でフォーマットした文字列が
ほしい時に便利な機能ですね。
CodeIgniter 3のユーザーガイド(User Guide)まとめ
- 関連記事
コメント