Olá, estou fazendo um projeto, que tem muitas áreas que fazem upload de imagens, então, ao invés de criar muitos helpers, fiz algo legal, e útil, economiza muito código.

Criando um helper simples, você teria os seguintes códigos.

<?php
    class HImagesHelper extends Helper{
        var $helpers = array("Html");
        function image($id){
            return $this->Html->image("/files/images/{$id}/image/origin.png");
        }
    }
?>


Repare que no “return” você passa o caminho “/files/images/{$id}/image/origin.png
Esse diterório “images” seria no caso, onde o upload das imagens seriam feitas.
Isso você fez manualmente, mas essa forma que vou mostrar, é simples, porém eficaz.

O upload da imagem, é feito pela controller, onde você passa a extenção, o tamanho e o nome da imagem.
Como vou mostrar passo-a-passo, vou criar também a controller, que foi onde me surgiu a idéia.

<?php
class ImagesController extends AdminController {
    var $name = "Images";
    var $helpers = array("HImages");

    var $files = array(
        "image" => array(
            "thumb" => array("type"  => "crop", "ext" => "jpg", "width" => 124, "height" => 86)
        )
    );
    function index() {
       
    }
}
?>
?>

Com a controller criada, temos o $name, que é isso que vamos usar para o nosso helper.
Bom, vamos la?

Agora vamos criar o helper.

vou usar o $name da nossa controller para criar o diterório, passando o name da controller.
No caso, temos que trocar o $name por $controller, pois do contrário não será possivel mostrar a image, já que quando formos mostrar na view, ela não vai saber o que é, passando a $controller, fica mais facil de identificar, desse modo, em nossa view, passamos um parametro para ela, assim ela saberá qual é a controller que irá usar, $this->params["controller"], esse é o parametro que temos que passar, para que seja mostrada a imagem exatamente.

<?php echo $hImages->image($this->params["controller"], $page["Page"]["id"]?>

Temos o seguinte código.

<?php
    class HImagesHelper extends Helper{
        var $helpers = array("Html");
        function image($controller, $id){
            return $this->Html->image("/files/{$controller}/{$id}/image/origin.png");
        }
    }
?>

Repare que eu passo mais um parametro para o método image, a ($controller},
neste caso, vai servir para criar o ditetório do upload com o $name da controller, e passamos esse parametro para o caminho, trocando o “images” por “{$controller}”, isso faz com que se crie o diterório automaticamente
com o nome da controller, deste modo, não precisamos ficar criando um helper para cada página que terá um upload.

Gostaram?
Então, até a próxima.