CakePHP::ViewをJavascriptで出力

7月 12th, 2007 admin Posted in CakePHP, PHP |

ViewをJavascriptで出力という表現があっているかどうかわかりませんが・・・Viewの内容をdocument.writeで書き出してくれます。

コード

/app/controllers/ads_controller.php

< ?php
class AdsController extends AppController {

	var $name = 'Ads';
	var $layout = "javascript";

	function index(){
		$this->set('data','exaple data');
	}
}
?>

/app/views/layouts/javascript.thtml

< ?php
header("Content-type: application/x-javascript");
$content_for_layout = r(array("\r\n","\n"),"",$content_for_layout);
echo 'document.write("'.r('"','\"',$content_for_layout).'")';;
?>

/app/views/ads/index.thtml

< ?php echo $data ?>

example.html

<script type="text/javascript" src="http://localhost/cake/ads/"></script>

出力

example.html

exaple data

ポイントはコントローラーでjavascript用のレイアウトの使用を宣言すること、レイアウトで、javascriptのヘッダを出力し、ビューの改行を削除しているところです。(1行づつdocument.writeをつけたほうがいいかも。)

※r()はCakePHPが用意してくれているstr_replaceのラッパー

Leave a Reply