quinta-feira, 6 de novembro de 2008

CakePhp - Por que models são no singular e controllers são no plural?

No incício do desenvolvimento da aplicação devemos respeitar algumas regras para que o Cake deva funcionar como esperamos.

Primeiro criamos uma tabela em nosso banco de dados. Esta tabela deve ser nomeada em minúsculo e deve estar noplural. Por exemplo: items

Depois criamos um arquivo model, este deve ser nomeado no singular: item.php. o nome da classe também no singular"class Item" seguido do atributo da variável name "var $name = 'Item'".

Depois é o momento do controller. Este sim deve estar no plural como o nome da tabela: "ItemsController" e deve possuir o atributo name no plural também "var $name = 'Items'". O arquivo será items_controller.php

Quando você solicitar uma ação para sua aplicação (ação de adicionar um registro na tabela items) você deverá indicar ao Cake para qual tabela a ação é referenciada, isso se faz relacionando o controller (responsável pelas ações) à tabela. O Cake é capaz de fazer esta relação através das correspondências entre os nomes dos controllers e das tabelas.

No caso do model, colocamos a indicação no singular pois este deve ser visto como uma instância da tabela. Por exemplo, no caso, o model representa um único registro da tabela items. Ele é singular, não é um conjunto de registros.É m objeto que consequentemente é entendido como a instância de uma classe (no caso, items).

CakePhp - por onde começar

Entender o conceito de como o Cake funciona foi um pouco complicado até uns dias atrás..
Confesso que não busquei a melhor maneira para começar a aprender..
Buscando evitar o susto do "primeiro contato" perguntei a alguns amigos da faculdade como instalar, pois nem isso eu imaginava como poderia ser..
Fugindo do manual no site oficial futuquei o Google em busca de tutoriais que mostravam os primeiros passos. Graças que existe o Tulio Faria que me orientou bem com os vídeos tutoriais...

Bem, para quem nunca saiu da casca do desenvolvimento de sites com códigos entranhados em HTML e quem nunca teve contato com Orientação a Objeto (O.O.), entender o funcionamento do Cake é algo que precisa de atenção especial. Isso não significa que seja dificil, só quero dizer que você precisa entender que passará por uma readaptação.

O Cake ajuda você a organizar a sua aplicação separando cada "área" do seu sistema.
Por exemplo, dentro da pasta da sua aplicação(normalmente /app) você encontra a pasta views. Nesta pasta serão armazenados os arquivos responsáveis por mostrar as saídas de dados (uma lista de itens cadastrados no banco de dados por exemplo) ou um painel para uma ação solicitada pelo usuário (um formulário que permita a inclusão de itens no banco de dados).

Essas ações e solicitações são controladas pelos Controllers através de funções. Ele interage com os arquivos de visão enviando e recebendo informações através da URL.

Caso seu controller de Itens tenha, no código do arquivo php, uma função chamada Adicionar, esta deverá ter um view correspondente com o mesmo nome da função.

CakePhp - Security.salt

Sempre que iniciamos nossa aplicação somos orientados a configurar o arquivo de conexão com o banco de dados; um outro detalhe importante é o seguinte aviso:


Notice (1024): Please change the value of 'Security.salt' in app/config/core.php to a salt value specific to your application [CORE\cake\libs\debugger.php, line 541]

No decorrer do desenvolvimento de uma aplicação, o Cake nos oferece diversas funcionalidades que otimizam nosso código. Uma delas é o método como iremos trabalhar com sessões.

Sessões são importantes para que possamos estabelecer um tipo de comunicação entre o servidor e o usuário, uma espécie de troca de informações. Um exemplo seria usar as sessões para informar se um usuário efetuou o login ou não.

Pensando assim não é difícil concluir que sessões devem armazernar as informações de uma forma segura. Mas o que este aviso tem a ver com as sessões?

Simples, o Cake define um valor padrão para as suas sessões e o define em Security.salt.
Esse valor não é alterado, ou seja, todos que fazem download do Cake no site oficial tem Security.salt com o mesmo valor. Então junto com a configuração do arquivo do banco de dados devemos alterar também o valor de Security.salt para preservar a segurança das nossas sessões.

Configure::write('Security.salt', 'DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi');

Preencha a linha com alguma string alfanumérica de aproximadamente 40 caracteres.

terça-feira, 4 de novembro de 2008

Realmente ainda preciso aprender. Cakephp, thumbnails, imagejpeg.

Só para fixar que em 99,9% dos casos o problema está entre a cadeira e o teclado.
Mas graças que sou uma menina espertinha e consigo me virar com o que já tem disponível pela internet.

Neste caso eu já havia resolvido este problema há algum tempo atrás mas havia me esquecido.. então para evitar o mesmo erro aqui vai um post só para me obrigar a lembrar disso e nunca mais cometer esse mico.

A questão era a necessidade de se armazenar thumbnails usando o CakePhp.

Para não se gastar tempo buscando soluções no Google, vá direto aqui : http://cakeforge.org/snippet/browse.php?by=lang&lang=5

Meu impasse era o uso do imagejpeg que não conseguia escrever em um diretório. Logo percebi que o problema era o que eu estava passando para o parâmetro visto que trabalho localmente e GD está habilitada.

Chamada : imageResize($srcFile, $destFile, $maxSize, $quality, $setHeight = false)

O parâmetro de $destFile deve passar o caminho junto com o nome do arquivo.
ex.: $destFile = "pasta/nomedoarquivo.jpg"

É só isso que precisava saber. Por isso que programadores de verdade devem ser valorizados e bem pagos! rs

quarta-feira, 29 de outubro de 2008

Cakephp - Libs

uses(string $lib1, $lib2, $lib3...)

Usado para carregar bibliotecas do núcleo do CakePHP(encontradas em cake/libs/).

sábado, 18 de outubro de 2008

CakePHP - algumas regras

Venho estudando o manual deste framework que conheci em uma palestra internacional.
Criar posts relacionados ao que tenho estudado é uma maneira de fixar o que venho estudando.
  • Nomes de arquivos são underscored e nomes de classes são camelcased;
Estrutura do CakePHP
Controllers - callbacks
  • beforeFilter(), executado antes de alguma ação do controller
  • beforeRender(), executado depois de uma ação do controller mas antes de uma ação do view
  • afterFilter(), executado depois da ação do controller e do view

quinta-feira, 16 de outubro de 2008

CLEAN URL EasyPHP 2.0

CakePhp, meus primeiros passos (clean url, mod_rewrite, cakephp css) ...
As alterações abaixo são necessárias para que você rode o CakePhp fazendo uso de "clean url" e também possa visualizar as páginas padrões com suas folhas de estilos (css), caso contrário será exibido html e texto puro.

As alterações devem ser feitas em : C:\Program Files\EasyPHP_2.0b1\conf_files\httpd.conf

That the change should be made in the file (on Windows) C:\Program Files\EasyPHP_2.0b1\conf_files\httpd.conf

For EsayPHP 2
1. (Uncomment this) remova a tralha desta linha:
#LoadModule rewrite_module modules/mod_rewrite.so

2. (Under Change) Próximo de "Options Indexes FollowSymLinks" altere esta linha :

AllowOverride None
(to) para :
AllowOverride All