コントローラーとビュー (3/6)
作成:2015-08-29 10:05
更新:2015-08-29 10:15
更新:2015-08-29 10:15
■コントローラーからビューへ値を渡す
ビューは、コントローラーで用意しておいた値を非常に簡単に受け取って表示することができます。これは、以下のように行います。
・コントローラー側の処理
コントローラー側では、Controllerクラスの「set」メソッドを使って値を設定します。これは以下のように記述します。
第1引数には、ビューテンプレート側で利用する変数名を指定します。第2引数に、その変数に代入する値を指定します。これで、指定の名前の変数に値が代入されます。
ビュー側は、<?= ?>タグを使って、用意された変数を出力すればいいのです。例えば、set('hoge', ○○) という具合にして変数hogeが用意されたなら、
このように記述すれば、変数hogeの値をその場に書き出せます。では、実際にやってみましょう。まず、下のリスト欄のようにコントローラーを修正しておきます。そして、index.ctpのテンプレートを以下のように書き換えてみてください。
これで、http://localhost:8765/helo/ にアクセスすると、変数messageの値がそのままページ内に出力されます。ここでは、index側に、
このような形で値を設定してあります。後はビュー側で、以下のようにして値を出力させるだけです。
たったこれだけで、コントローラーから必要な値をビューに渡して利用することができるのです。
・コントローラー側の処理
コントローラー側では、Controllerクラスの「set」メソッドを使って値を設定します。これは以下のように記述します。
$this->set( 変数名 , 値 );
第1引数には、ビューテンプレート側で利用する変数名を指定します。第2引数に、その変数に代入する値を指定します。これで、指定の名前の変数に値が代入されます。
ビュー側は、<?= ?>タグを使って、用意された変数を出力すればいいのです。例えば、set('hoge', ○○) という具合にして変数hogeが用意されたなら、
<?=hoge ?>
このように記述すれば、変数hogeの値をその場に書き出せます。では、実際にやってみましょう。まず、下のリスト欄のようにコントローラーを修正しておきます。そして、index.ctpのテンプレートを以下のように書き換えてみてください。
<div>
<h3>Index Page</h3>
<p><?= $message ?></p>
</div>
これで、http://localhost:8765/helo/ にアクセスすると、変数messageの値がそのままページ内に出力されます。ここでは、index側に、
$this->set('message', 'Hello! this is sample page. ;-)');
このような形で値を設定してあります。後はビュー側で、以下のようにして値を出力させるだけです。
<?= $message ?>
たったこれだけで、コントローラーから必要な値をビューに渡して利用することができるのです。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
<?php namespace App\Controller; use App\Controller\AppController; class HeloController extends AppController { public function index() { $this->set('message', 'Hello! this is sample page. ;-)'); } }
※関連コンテンツ
「初心者のためのCakePHP3 プログラミング入門」に戻る