libro
www.tuyano.com
初心者のためのCakePHP2 プログラミング入門

ビューを使おう! (3/3)

作成:2011-11-07 08:05
更新:2011-11-07 08:05

■コントローラー=ビュー間で値を受け渡す

とりあえず基本的な表示はできるようになりました。が、ただHTMLのタグをビューとして表示するだけなら、別にCakePHP2.0など使わず、普通にHTMLを書けばいいだけです。PHPなどのサーバーサイド言語を利用するのは、サーバー側でさまざまに処理をしてページを作成できるからでしょう。

CakePHPでこうしたプログラムと表示の連携を考える場合、「コントローラー側で必要な処理をし、それをビューに受け渡して表示する」というやり方をします。つまり、コントローラーからビューへと必要な値を受け渡すことで、ビューに各種の表示などを行うのです。

では、コントローラーからビューへ値を受け渡すにはどのようにすればいいのか。以下に整理しておきましょう。

●コントローラーで値を設定する
$this->set( 変数名 , 値 );
これで、指定した変数に値を設定することができます。では、ビュー側は? 単に、setで作られた変数をそのまま利用するだけです。例えば、
$this->set(“name”,”tuyano”);
こんな具合にコントローラー側で実行したとしましょう。するとビューでは、$nameという変数が用意され、そこに”tuyano”が代入されています。後は、$nameをそのままechoするなりして利用すればよいのです。

下のリスト欄に、簡単な利用例を挙げておきました。ここでは、テキストとテキスト配列をそれぞれmsgdatasという変数に設定しています。ビュー側では、これらの変数を使って表示を組み立てるだけです。実に簡単ですね。

ちなみに、ここでは1つ、特別な変数に値を設定しています。この部分です。
$this->set("title_for_layout","Index Page");
このtitle_for_layoutという変数は、CakePHP2.0が利用している変数で、ページのタイトルを設定するものです。CakePHPでは、<title>タグが自動的に<body>に移動してしまいましたが、実はタイトルは<title>ではなく、このtitle_for_layoutで設定するようになっていたのですね。これは非常によく使う変数ですので、あわせて覚えておきましょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※SampleController.php

<?php
App::uses('AppController', 'Controller');

class SampleController extends AppController {

  public function index() {
    $this->set("title_for_layout","Index Page");
    $this->set("msg","hello!");
    $this->set("datas",array("One","Two"));
  }
  
}


※index.ctp

<h1>Index Page</h1>
<p>this is test View.</p>
<p>message: <?php echo $msg; ?></p>
<p> </p>
<p>Data.</p>
<div>
  <ul>
    <?php foreach($datas as $data): ?>
    <li><?php echo $data; ?></li>
    <?php endforeach; ?>
    </ul>
</div>

※関連コンテンツ

「初心者のためのCakePHP2 プログラミング入門」に戻る