Cake1からCake2に移行した際に、Call to a member function body() on a non-objectエラーが出る場合の対応
Cake1.2からCake2に乗せ換えしていてはまった話。
エラーログに下記のようなメッセージが出てうまく表示できない場合、コントローラのresponseオブジェクトが存在しないのが原因。$this->response->body()をCakeのコアコードで呼び出すのでその時にresuponseオブジェクトが無いからメソッド呼び出しエラーとなる。
Fatal Error (1): Call to a member function body() on a non-object
理由は、Controllerのコンストラクタを下記のように記述しているからでした。。。。
function __construct() { parent::__construct(); }
Cake2からはコンストラクタにrequest,responseオブジェクトが渡されるのでそれを考慮しないといけない
function __construct($request, $response) { parent::__construct($request, $response); }
いやー、はまったわー。保守もしたことがないコードの載せ換え作業は大変ですねー