CakePHP4 View出力をファイルに保存
CakePHP4でView出力を画面ではなくそのままファイルに保存する方法。
通常はrenderで画面出力。条件によりファイルへ出力する例。
この例では templates/Seconds/second.php がファイルへ出力するテンプレートとなる。
use Cake\View\View;
use Cake\Filesystem\File;
class FirstsController extends AppController {
public function index(): void {
$foo = (何らかの値);
$this->set('foo',$foo);
if ((何らかの判定)) { //ファイルへ出力
$view = new View();
$view->set($this->viewBuilder()->getVars());
$view->setTheme('ThemeSecond');
$view->setLayout('second');
$view->setTemplatePath('Seconds');
$view->setTemplate('second');
$out = $view->render();
$pathFile = '(保存先ファイル名)';
$file = new File($pathFile,true);
$file->write($out);
$file->close();
} else { //画面へ出力
$this->render('index');
}
}
}