CakePHP 3 のコントローラ内でテンプレート内容を取得する

はじめに

今日は CakePHP 3 のコントローラの中で、テンプレートファイルの内容取得し、変数に格納する方法をご紹介します。

今回使用した CakePHP のバージョンは 3.8.5 です。

実装方法

サンプルコードは以下の通りです。通常の画面描画の場合と同様に $view->set() でパラメータを渡せます。

/src/Controller/SampleController.php
<?php
namespace App\Controller;

class SampleController extends AppController
{
    public function view()
    {
        // テンプレート読込用の View を取得
        $view = $this->viewBuilder()->build();
        // 変数渡しの確認
        // ($view を $this にしないように注意)
        $name = 'Twin Turbo!';
        $view->set(compact('name'));
        // テンプレート読込
        // (/src/Template/MyTemplates/smp01.ctp)
        $layout = false;
        $output = $view->render('/MyTemplates/smp01', $layout);

        debug($output);
        exit;
    }
}
/src/Template/MyTemplates/smp01.ctp
Name: <?= h($name) ?>

このコードは、文章やメールのテンプレートをコントローラで処理したい場合などに利用できます。