ビューを使おう! (3/3)
作成:2011-11-07 08:05
更新:2011-11-07 08:05
更新:2011-11-07 08:05
■コントローラー=ビュー間で値を受け渡す
とりあえず基本的な表示はできるようになりました。が、ただHTMLのタグをビューとして表示するだけなら、別にCakePHP2.0など使わず、普通にHTMLを書けばいいだけです。PHPなどのサーバーサイド言語を利用するのは、サーバー側でさまざまに処理をしてページを作成できるからでしょう。
CakePHPでこうしたプログラムと表示の連携を考える場合、「コントローラー側で必要な処理をし、それをビューに受け渡して表示する」というやり方をします。つまり、コントローラーからビューへと必要な値を受け渡すことで、ビューに各種の表示などを行うのです。
では、コントローラーからビューへ値を受け渡すにはどのようにすればいいのか。以下に整理しておきましょう。
●コントローラーで値を設定する
下のリスト欄に、簡単な利用例を挙げておきました。ここでは、テキストとテキスト配列をそれぞれmsg、datasという変数に設定しています。ビュー側では、これらの変数を使って表示を組み立てるだけです。実に簡単ですね。
ちなみに、ここでは1つ、特別な変数に値を設定しています。この部分です。
CakePHPでこうしたプログラムと表示の連携を考える場合、「コントローラー側で必要な処理をし、それをビューに受け渡して表示する」というやり方をします。つまり、コントローラーからビューへと必要な値を受け渡すことで、ビューに各種の表示などを行うのです。
では、コントローラーからビューへ値を受け渡すにはどのようにすればいいのか。以下に整理しておきましょう。
●コントローラーで値を設定する
$this->set( 変数名 , 値 );これで、指定した変数に値を設定することができます。では、ビュー側は? 単に、setで作られた変数をそのまま利用するだけです。例えば、
$this->set(“name”,”tuyano”);こんな具合にコントローラー側で実行したとしましょう。するとビューでは、$nameという変数が用意され、そこに”tuyano”が代入されています。後は、$nameをそのままechoするなりして利用すればよいのです。
下のリスト欄に、簡単な利用例を挙げておきました。ここでは、テキストとテキスト配列をそれぞれmsg、datasという変数に設定しています。ビュー側では、これらの変数を使って表示を組み立てるだけです。実に簡単ですね。
ちなみに、ここでは1つ、特別な変数に値を設定しています。この部分です。
$this->set("title_for_layout","Index Page");このtitle_for_layoutという変数は、CakePHP2.0が利用している変数で、ページのタイトルを設定するものです。CakePHPでは、<title>タグが自動的に<body>に移動してしまいましたが、実はタイトルは<title>ではなく、このtitle_for_layoutで設定するようになっていたのですね。これは非常によく使う変数ですので、あわせて覚えておきましょう。(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
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 プログラミング入門」に戻る