CakePHP コントローラとビューの連携
- 2019年12月26日
- 技術情報
本記事は前回の記事「CakePHP コントローラとURLの関連」の続きです。
今回はビューテンプレートの作成をおこない、コントローラとの値のやり取りをおこないます。
ビューテンプレート の作成
CakePHPのテンプレートファイルは拡張子「ctp」をつけて以下の階層に保存をおこないます。
(下記の例は「SampleController」の「index」メソッドと連携するビューテンプレートを作成する場合の例です)
C:\xampp\htdocs\mycakeapp\src\Template\Sample\index.ctp
テンプレートファイルの記述例:
<h1><?=$title ?></h1>
<p><?=$subtitle ?></p>
テンプレートと連携するコントローラの設定
テンプレートと連携するコントローラの記述方法は以下のようになります。
前回の記事で作成したSampleControllerを以下のように書き換えます。
<?php
namespace App\Controller;
use App\Controller\AppController;
class SampleController extends AppController
{
public function index()
{
$this->viewBuilder()->autoLayout(false);
$this->set('title', 'ビューテンプレート');
$this->set('subtitle', 'コントローラとの連携をおこないます');
}
}
ブラウザで以下URLにアクセスをおこない、値の受け渡しがおこなわれていることを確認します。
http://localhost/caketest/sample
以下がブラウザでの表示結果です。Controller側でsetした値がビューテンプレートで表示されていることが確認できました。

配列で受け渡す方法
上記の例ではひとつずつ変数をセットして値の受け渡しをおこなっていましたが、配列を使用して一度でセットすることも可能です。
以下が配列を使用した場合で書き換えた例です。実行結果は上記の例と同じです。
<?php
namespace App\Controller;
use App\Controller\AppController;
class SampleController extends AppController
{
public function index()
{
$this->viewBuilder()->autoLayout(false);
$values = [
'title' => 'ビューテンプレート',
'subtitle' => 'コントローラとの連携をおこないます',
];
$this->set($values);
}
}
次回は入力フォームの作成方法について説明いたします。CakePHPにはフォーム用のHTMLを自動生成する「フォームヘルパー」という機能がありますので、そちらの説明をおこないたいと思います。
木曜日担当:nishida
nishida at 2019年12月26日 10:00:53