@ CakePHP

ビューテンプレート

ビューには大きく分けて「ビューテンプレート」と「レイアウト」があります。

「ビューテンプレート」は、ページ内のコンテンツエリア内に表示する部分のみを定義したもの。「レイアウト」は、ページ全体の定義をするテンプレートです。

今回は、レイアウトを使用せず、ビューテンプレートだけを使ってページを表示します。

ビューテンプレートの作成

「src」フォルダの「Template」フォルダの中に「Practices」という名前のフォルダを作成し、その中にビュー(index.ctp)を作成します。

cake3app\src\Template\Practices\index.ctp

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="utf-8" />
  <title>Practice</title>
</head>
<body>
<h1>practice</h1>
<p>This is a practice of CakePHP.</p>
</body>
</html>

コントローラの作成

「src」フォルダの「Controlle」フォルダの中に「Practices」という名前のコントローラを作成します。

cake3app\src\Controller\PracticesController.php

<?php
namespace App\Controller;

use App\Controller\AppController;

class PracticesController extends AppController
{
    public $name = 'Practices';

    public $autoRender = true;

    public function index()
    {
        $this->viewBuilder()->autoLayout(false);
    }
}

以下の URL で、アプリケーションにアクセスできます。

< http://localhost/cake3app/practices/ >

自動レイアウトの設定

cake3app\src\Controller\PracticesController.php

public function index()
    {
        $this->viewBuilder()->autoLayout(false);
    }

CakePHP では、自動レイアウト機能で表示されるページ全体のレイアウトを記述したテンプレートファイル(src\Template\Layout\default.ctp)が用意されています。

今回は、レイアウトを使用せず、ビューテンプレートだけを使ってページを表示するので、自動レイアウトはOFFに、自動レンダリングはONに設定します。

自動レイアウトは Controller に用意されている「viewBuilder」オブジェクトの「autoLayout」メソッドを呼び出して実行します。viewBuilder()->autoLayout(true)ならば自動レイアウトが ON、viewBuilder()->autoLayout(false)ならば OFF になります。