ビューを使おう! (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 プログラミング入門」に戻る