ビューを使おう! (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にしてみてください。
●プログラム・リスト●
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | ※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 プログラミング入門」に戻る