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