めも帖

「めも帖」代わりにダラダラと書いていったり、めもしたりしているだけです。

CakePHPのレンダリング結果を受けとる

CakePHP 1.2でコントローラーのアクションのレンダリング結果を受けとりたい場合がありました。そして、画面の表示はしたくない。そこで調べてみたのが以下の結果でした

自動的にレンダリングしない設定

  • コントローラーのfunction
  • autoRenderをFLASEにする
  • レンダリング結果は出力されない
<?php
class PostsController extends AppController {
     function view($id){
          $this->Post->id = $id;
          $post = $this->Post->read();
          $this->set('post', $post);

          $this->autoRender = FALSE;
     }
}
?>

レンダリングを任意の時(タイミング)に行う

  • コントローラーのファンクションであるrender()を実行
<?php
class PostsController extends AppController {
     function view($id){
          $this->Post->id = $id;
          $post = $this->Post->read();
          $this->set('post', $post);

          $this->autoRender = FALSE;
          $this->output = $this->render();
     }
}
?>

画面表示をしないで、出力結果を受けとる

  • $this->outputには出力される内容が入る
  • $this->outputに値があると、$this->autoRenderがFALSEでも出力はされる
    • そこで、$this->outputをNULLにすると、出力されない
<?php
class PostsController extends AppController {
     function view($id){
          $this->Post->id = $id;
          $post = $this->Post->read();
          $this->set('post', $post);

          $this->autoRender = FALSE;
          $this->output = $this->render();
          $this->output = NULL;
     }
}
?>

そういえば

本を買って読んでみようかと思ったり、思わなかったり...

CakePHP1.2ガイドブック

CakePHP1.2ガイドブック