Simples assim
Helper para upload com cakephp.
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.
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.
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.
Temos o seguinte código.
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.
| Print article | This entry was posted by flaviomuniz on 03/07/2009 at 20:31, and is filed under CakePhp, PHP, Projects. Follow any responses to this post through RSS 2.0. You can leave a response or trackback from your own site. |

about 1 year ago
Dicas. Voce pode colocar este método dentro do app_helper e usar direto em suas views ou ainda pra organizar melhor criando um helper para cada model com herança ao app_helper e em cada um passar passar somente um id que retorna a imagem de cada item.
Abraços