DEVELOPERS BLOGデベロッパーズブログ

  1. HOME > 
  2. 加藤 正人 > 
  3. タイトル

CakePHP のレンダリング結果を保存したい

2018/04/14

CakePHP のレンダリング結果を保存したい

 

CakePHP で作成したシステムの、レンダリング結果を HTML ファイルとして保存したいことがある。

ブラウザの「ページを名前を付けて保存」が一見簡単そうなのだが、この機能で行なった場合、ページに含まれる画像等の参照 URI が書き換えられて保存したページに関連付けられたローカルフォルダ内の画像への URI にされてしまう。

保存したファイルのセットだけでローカル表示ができるという意味では便利だが、そのファイルを修正して何かに使いたい場合はオリジナルの URI が保持されていないので少々困ったことになる。

また、JavaScript 等が動作するページの場合、動作した結果が保存される。だが、これだと CakePHP の出力した HTML とは構造が変わってしまっている場合がある。

このような場合に、CakePHP のレンダリング結果を保存できれば便利だ。そのための方法を CakePHP 2.x で考えてみた。

やり方としては、コントローラのアクションメソッド内で明示的に render() を実行し、その結果をファイルに保存するだけだ。

上記のようにすることで、fugafuga アクションが実行されるたびに CakePHP の TMP フォルダ内に HogeHogeController::fugafuga.html という名称で CakePHP のレンダリング結果が保存される。

この記事は加藤 正人さんが書いています!

加藤 正人

氏名
加藤 正人
役職
多分SE
血液型
秘密
出没
美味しいもののあるところ
特色
タヒチ大好き。ちょいメタボ。

関連エントリー