segunda-feira, 27 de abril de 2009

A função que precisava!

Em seu trabalho, um dia você vai precisar transformar aquele dado 0/1 em ativo/inativo na visão.

A idéia seria a seguinte:
($variavel == 1) ? "ativo" : "inativo";

Respeitando MVC, não deveremos colocar esta lógica na view, de forma alguma.
A view tão somente deve exibir os dados setados a ela.
Para exibir esses dados devem ser modificados no controller. Sendo $variavel já enviada com "ativo" ou "inativo".

Em CAKEBAKER ele fala sobre a mesma idéia só que trabalhando do model para o banco.

Busquei tratar o valor de $variavel que seria impresso na view no controlador visto que ele é responsável por enviar os dados a mesma. Então que sejam enviados os dados de forma correta.

Já na hora de tratar com banco, a responsabilidade é do modelo.

Parei para pensar um pouco sobre como realizar isso com próprio sql.
Numa leitura superficial encontrei um artigo que falava sobre o uso CASE em SELECTS.
Vejam se a idéia não é parecida com o exemplo dado neste blog?

select
CASE month when "01" then "January"
when "02" then "February"
when "03" then "March"
END
from calendar where year = "2005" order by month

Fonte principal : http://dev.mysql.com/doc/refman/4.1/pt/control-flow-functions.html

segunda-feira, 6 de abril de 2009

CakePHP - headers already sent by ...

Bem, aqui vai mais uma dica bem rápida. Caso você se depare com esse probleminha ao tentar rodar sua aplicação:
"cakephp Cannot modify header information - headers already sent by"
Verifique se não deixou algum espaço em branco após a tag de fechamento do php (?>)

Confira mais informações aqui.

Jquery - lembrete

Observando uns amigos meus utilizando o Jquery, notei que eles recorrem ao Google para solucionar algumas dúvidas simples. Então busquei um lugar mais propício para que nós pudessemos sanar as dúvidas sem dar muitas voltas.

FAQ : Jquery FAQ

Muito útil nos momentos em que se esquece como desabilitar inputs, trocar estados, definir estilos, animar e etc.

sábado, 28 de março de 2009

Outras reflexões sobre aprofundar conhecimentos

Pelo o que vejo no analytics, percebo que o público chega até meus posts através dos buscadores que relacionam os posts a necessidade em questão. O público (vocês) vêm em maioria buscando a solução rápida para bugs ou um tutorial rápido sobre ajax com php e etc. Quando criei o blog não tinha o objetivo de oferecer orientação mais profunda sobre assuntos como tutoriais e demais. Meus relatos são todos referênciados ao meu cotidiano de desenvolvimento. Então, em muitos casos, não atendo a necessidade do leitor.

Mas como vi que cada vez mais pessoas estão "caindo" no blog, não custa nada dividir um pouco de conhecimento.

Comecei na área de desenvolvimento com o interesse em Flash. Depois desenvolvi com CSS e iniciei o aprendizado por conta própria sobre PHP e demais.

Muitas vezes bati a cabeça com bobeiras. No post anterior relatei exatamente a importância de possuir alguns conhecimentos técnicos e se preocupar em ler manuais e etc.

Muita gente que está iniciando o uso de CakePHP não possui conhecimento sobre Padrões de Software, GRASP. Não sabem o que é MVC, BCE. Muitos termos técnicos são lidos como uma palavra desconhecida, e não buscamos saber seu significado assim quando lemos um livro e não buscamos as palavras desconhecidas no dicionário. O que esquecemos é que esses pequenos detalhes podem nos travar no desenvolvimento e nos causar um sentimento de frustração.

Nos vídeos do Túlio Faria, ele ensina bem do início como usar o CakePHP. Ele diz como funciona a aplicação com seus Controllers e Models, onde cada arquivo deve ficar e etc. A questão é que não nos passa pela cabeça que Controller, Model entre outros estão relacionados a padrões. Decorrente disso vemos nos fóruns perguntas como "Devo ter um model/controller para cada página do site?".

Por desconhecer padrões, não enxergamos o que fazemos como uma aplicação, não enxergamos as camadas de desenvolvimento. O que ocorre é que o trabalho é executado com a visão de que se está construindo um site, a mesma visão que temos quando montamos um site estático ou sem padrões.

quinta-feira, 5 de fevereiro de 2009

CakePHP - utilizando o saveField()

O método saveField() atualiza um campo específico em seu banco de dados.

$this->Model->saveField('Campo',$valor);

É importante identificar o model antes de usar este método caso contrário um novo registro será criado.

$this->Model->id = $id;

segunda-feira, 2 de fevereiro de 2009

CakePHP - Não esqueça do setFlash ao configurar seu layout.

Caso tenha mudado o layout de sua aplicação e notou que as mensagens de erro e avisos retornados pelo setFlash não estão mais aparecendo na tela, você provavelmente removeu a verificação do setFlash em seu view acidentalmente.

if ($session->check('Message.flash')) {
$session->flash();
}
?>

terça-feira, 20 de janeiro de 2009

Acentuação CakePHP : Encoding

O CakePHP 1.2 utiliza o UTF-8. No início podemos nos deparar com alguns problemas referentes a acentuação.
Buscando entender um pouco isso fiz algumas buscas na internet (google) e segui algumas recomendações simples.
  • Sempre ficar atento ao encoding do Banco de Dados;
  • Configurar o enconding no arquivo database.php do Cake;
  • Certificar o encoding utilizado em suas páginas;
Estas são precauções simples para evitar problemas com acentuação.

Atualmente, pelo que constatamos em muitos blogs e nas conversas entre desenvolvedores, o UTF-8 está com a preferência de uso.

Aqui vai uma boa dica : http://cakephp.afons.us/?tag=encoding

Uma referência para leitura: http://pt.wikipedia.org/wiki/UTF-8

Um post sobre Charsets e Encodes: http://www.tableless.com.br/charsets-e-encodes-tabelas-de-caracteres

domingo, 11 de janeiro de 2009

Páginas internas dinâmicas com CakePHP

Bem, andei um pouco afastada do blog por que entrei de férias e comecei a colocar alguns detalhes pessoais em ordem.

Mas o assunto deste post não são as minhas férias. Vamos ao que realmente importa.

Em algum momento do seu aprendizado sobre o CakePHP você se pergunta : "Como faço para criar páginas internas?".

Algumas respostas e sugestões aparecem : "Será que devo criar um controller para cada página interna?".Para esta primeira dedução você logo vai encontrar a resposta. Não, você não precisa criar um controller para cada página. (Easily creating static pages)

Lá na pasta "views" dentro de sua aplicação(app) você vai encontrar um diretório "pages". Todas as páginas internas do seu site ficarão armazenadas ali, ou seja, simples arquivos .CTP. Nada de controllers.

Perfeito. Agora seu site possui páginas internas tais como : "Quem somos", "Contato", etc.

Mas e se em algum momento formos questionados por nossos clientes : "Será que posso alterar o quem somos?". Bem, neste caso nossas páginas internas estão estáticas. Precisamos tornar esse conteúdo dinâmico.

Busquei um pouco na internet uma maneira de resolver essa questão.
Confesso que antes de qualquer coisa fiquei quebrando a cuca tentando resolver sozinha, depois de tentar as saídas que achei possíveis recorri aos resultados do Google. A busca retornou o que estava precisando (Managing simple pages in cakephp).

Com uma simples adaptação do código para a última versão do Cake consegui adotar o CRUD para minhas páginas internas usando o Pages_Controller do próprio Cake sem afetar os demais controllers.

Essa é a dica que tenho para quem precisa dessa adaptação; um ótimo 2009 para todos.