こもろぐ @tenkoma

What We Find Changes Who We Become -- Peter Morville著『アンビエント・ファインダビリティ 』

広告:本ブログで紹介している書籍等商品の紹介でAmazonアソシエイトを利用していることがあります。

Webページの代わりに画像を出力するコントローラ

app/controller/image_controller.php

<?php
class ImageController extends AppController
{
    var $name = 'Image';
    var $uses = array();

    function index()
    {
        header('Content-Type: image/png');
        $this->set('image', file_get_contents(APP.'tmp'.DS.'cache'.DS.'wallpaper.png'));
        $this->layout = '';
        $this->render();
    }
}
?> 

app/views/image/index.thtml

<?php echo $image;?>

$this->layoutを空にするのを忘れると,(デフォルトレイアウトをいじらない限り)表示されなくなります.echoでfile_get_contentsしたものをそのまま吐いてしまえば,表示はされますが,$this->layoutを空にするのを忘れたときに,画像の末尾にHTMLがくっついちゃうので,$this->setしたほうがミスは減るでしょう.
http://d.hatena.ne.jp/surge/20080212/1202743718
Controller::autoRenderってメンバがあるんだ.ビューに渡したりと回りくどいことをしなくてよいかも…