Cauan Cabral's.

CakePHP: Plugin Locale

Cauan Cabral
Cauan Cabral
Posted underCakePHPDesenvolvimento WebPHP

Vamos falar um pouco sobre outro plugin para CakePHP que surgiu no coração da Radig: o Locale.

Meu amigo José Agripino já apresentou o plugin no próprio blog da Radig, mas como reescrevi quase que totalmente o plugin nos últimos dias, acredito ser a hora de falar dele novamente.

Nada melhor para ver a utilidade de algo como imaginar uma situação de uso real, então vamos lá…

Cenário 1: você desenvolve um sistema para brasileiros, e quer permitir a entrada de informações em formato local, isto é, datas com dia/mês/ano e números com vírgula separando decimais. O problema é que estes dados são inválidos em um banco de dados convencional (como MySQL e PostgreSQL). Ao tentar salvar uma data formatada com dia/mês/ano você receberá um erro como resposta. Como resolver isso? Use o behavior Locale no seu modelo.

Basta adicionar o behavior Locale no modelo que ele fará a conversão de datas e números para o formato americano.

public $actsAs = array('Locale.Locale');

É possível converter automaticamente datas, datas acompanhadas de horas e decimais/floats.

Cenário 2: você já tem os dados do seu usuário armazenados no banco (formato padrão/americano) e quer apresenta-los em um formato local na sua View, o que fazer? Use o Helper Locale em sua view. Primeiro ative o helper no seu controller:

public $helpers = array('Locale.Locale');

Agora basta usa-lo na view:

echo $this->Locale->date($this->data['User']['birthday']);

É possível formatar data, data com hora, data literal (quarta-feira 18 de abril de 2012, por exemplo), decimais como 53,42 e valores monetários ( R$ 53,42 ).

Além do Behavior e do Helper, você pode carregar as libs Localize e Unlocalize em qualquer parte de seu sistema para converter entre os dois diferentes formatos. As libs são estáticas e suportam aninhamento de método, assim você pode fazer:

echo Localize::setLocale('pt_BR')->decimal(12.45); // 12,45

A unica configuração necessária é a definição do locale de sua aplicação, que pode ser feito no próprio bootstrap.php do Cake:

setlocale(LC_ALL, 'pt_BR');

Assim como outros plugins da Radig, você pode consultar os testes incluídos para ver melhor o funcionamento deste.

Se for utilizar, nos avise, será uma grande satisfação ver que o plugin é util para outros.

Há uma versão compatível com o CakePHP 1.3 e outra com o CakePHP 2.x, basta usar o branch correspondente.


pgModeler – gerando o seu binário

Cauan Cabral
Cauan Cabral

Tem algumas aplicações que são icônicas pra gente – por diversas razões – no meu caso, alguns destes são winamp, mIRC, Macromedia Flash MX, Amarok, Kompare, MySQL Workbench e Gitlab. Outro que conheci e me deixou admirado quando descobri foi o pgModeler, primeiro pela qualidade da aplicação em si que é o mais próximo do […]

Dica Rápida: usando tipos “complexos” com Migrations no Phinx

Cauan Cabral
Cauan Cabral

Essa é uma dica bem curta e realmente rápida pra registrar algo que precisei pesquisar algumas vezes nos últimos anos e sempre me esqueço. Cena: você define uma tabela no seu projeto e gostaria de usar uma coluna com o tipo tsvector (como citei em posts recentes) ou então uuid. Você quer usar as funções […]