$this->render()の動作について

Twitter ツイート Hatena Bookmark ブックマーク

前から仕事でよくcakePHPをつかっているんですが、まだまだ知らない機能とかたくさんあるんだなーと実感しました。

出力するデータに対して、正規表現で置換したいなーと思っていて、最初はhepler作ってafterLayoutとかで置換してました。
ただ正規表現後にDBから値を取り出してその値に置換するとかやっていたので、なんとなくコントローラで処理したいなーとかおもっていていろいろと調べていたら、controllerで$this->render();を実行すると$this->outputに出力する内容が格納されるということを発見しました。

なんでこんな感じにすれば出力の値に正規表現で置換とかできます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
<?php
class HogeController extends AppController
{

	var $name = "Hoge";

	function huga() {
		$this->set('polidog','ポリドッグは不細工です');
		$this->render();
		$pattern = "不細工";
		$replacement = "イケメン";
		$this->output = preg_replace($pattern, $replacement, $this->output);
	}

}
comments powered by Disqus
Built with Hugo
テーマ StackJimmy によって設計されています。