5丁目通信(仮称)

とある5丁目で活動する還暦を過ぎたWebプログラマーの覚え書きです。それとかかってくる迷惑電話や、家業のアパート経営について。

CakePHPのビューを変数に格納する話し


メールの本文をビューを使って生成したときがあります。PHPのストリングで結合してなんてやりたくありません。後で修正が面倒。

CakePHPの1.3のときは、

$this->output_layout = 'mail';

// バッファリング開始
ob_start();

// Viewアクションでレンダリングする。
$this->render('mail_view');

// レンダリングした結果を取得する。
$html = ob_get_clean();

なんてob_start()とrender()でやっていたけど、CakePHPが2になってからrender()がレンダリング結果を返さなくなったようだ。

そこで、viewのソースファイルを読んで、次のように対応した。

// Viewアクションでレンダリングする。
$response = $this->render('mail_view', 'email');

// レンダリングした結果を取得する。
$html = $response->__toString();

なんだか__toString()とか内部のメソッドを呼んでいるが、もっとよい方法があるのだろうか?

著:山田祥寛
¥3,366 (2024/11/21 16:43時点 | Amazon調べ)
著:松浦 健一郎, 著:司 ゆき
¥2,574 (2024/11/21 16:43時点 | Amazon調べ)
著:谷藤賢一, 著:徳丸浩
¥2,750 (2024/11/21 16:43時点 | Amazon調べ)