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) ?>
このコードは、文章やメールのテンプレートをコントローラで処理したい場合などに利用できます。