CakePHP Brasil

22 abril 2009

Formatação no estilo brasileiro

Arquivado em: CakePHP, Tutoriais — Tags:, , , , , — Juan Basso @ 8:41 pm

Cansado de chamar várias funções com diversos parâmetros para formatar os valores de data, número, etc nos padrões brasileiros? Então seu problemas acabaram!

Agora no plugin CakeBr há o helper chamado Formatacao para facilitar a formatação de datas e números. Os seguintes métodos podem ser utilizados:

  • data($data = null) Formata uma data timestamp no formato dd/mm/YYYY. Se não for informada a data, será utilizada a data atual
  • dataHora($dataHora = null, $segundos = true) Idem anterior, porém com a informação da hora junto.
  • dataCompleta($dataHora = null) Mostra a data completa. Exemplo: ‘terça-feira, 21 de abril de 2009, 10:00:00′.
  • precisao($numero, $casasDecimais = 3) Similar ao método precision do helper Time, mostrando os números no formato brasileiro.
  • porcentagem($numero, $casasDecimais = 2) Mostra o valor em porcentos, similar ao toPorcentage do TimeHelper.
  • moeda($valor, $opcoes = array()) Mostra o valor em reais. Exemplo: R$ 10,20.
  • moedaPorExtenso($numero) Escreve o valor por extenso, em reais.

Caso alguém tenha mais algum método para incluir, basta informar ou criar um fork no projeto.

24 maio 2008

Usando o helper Number

Arquivado em: CakePHP — Tags:, , — Juan Basso @ 2:00 am

Acredito que na maioria dos sites é necessário a formatação de números, incluindo valores. Por isso, vou explicar as funções que o helper Number pode nos proporcionar para que nossos sistemas fiquem mais ágeis ainda.

Ele possui 5 métodos, são eles:

precision: você passa um número de parâmetro e ele vai retornar este número com uma certa quantidade de casas decimais. A quantidade de casas que você quer é definido no segundo parâmetro. Este segundo parâmetro é opcional, sendo o padrão 3. Exemplos:

1
2
3
$number->precision(50.37243682); // Retornará 50.372
$number->precision(50.37243682, 2); // Retornará 50.37
$number->precision(50.3, 3); // Retornará 50.300

toReadableSize: você passa uma quantidade de bytes e ele retorna de uma forma legível o tamanho. Por exemplo, 1024 bytes correspondem a 1 KB, portanto ele vai te retornar ‘1 KB’. Exemplos:

1
2
3
4
$number->toReadableSize(0); // Retornará '0 Bytes'
$number->toReadableSize(1); // Retornará '1 Byte'
$number->toReadableSize(10240); // Retornará '10 KB'
$number->toReadableSize(21411921.92); // Retornará '20.42 MB'

toPercentage: simplesmente coloca o sinal % no final. É opcional informar a precisão como segundo parâmetro. Exemplos:

1
2
$number->toPercentage(50.4563); // Retornará 50.456%
$number->toPercentage(50.421, 2); // Retornará 50.42%

format: O primeiro parâmetro corresponde ao número. O segundo, opcional, corresponde as opções que você deseja para formatar o número. Neste parâmetro você passa um array com as opções, onde você pode configurar o seguinte:
 - before: texto que vai na frente do número. O padrão é ‘$’;
 - places: número de casas decimais. O padrão é 2;
 - thousands: símbolo de separação de milhares. O padrão é ‘,’;
 - decimals: símbolo de separação de decimais. O padrão é ‘.’.
 - after: texto que vai atrás do número. O padrão é vazio;
Exemplos:

1
2
3
4
$number->format(50); // Retornará '$50.00'
$number->format(50.25); // Retornará '$50.25'
$number->format(50.25, array('decimal'=>',')); // Retornará '$50,25'
$number->format(2050.25, array('after'=>'', 'before'=>'', 'thousands'=>'.', 'decimal'=>',')); // Retornará '2.050,25'

currency: transforma um número em valor monetário. Como segundo parâmetro, é opcional informar a unidade monetária. Atualmente, o CakePHP suporta apenas 3: USD (Dólar americano), GBP (Libra esterlina) e EUR (Euro). Já fiz o pedido para o pessoal de desenvolvido para incluírem o BRL (Real Brasileiro), mas acredito que só entre na versão 2.0. Mesmo não tendo a moeda brasileira ali, é possível usar o terceiro parâmetro, que então você pode definir as mesmas configurações de format e mais:
 - zero: valor neutro da moeda. O padrão é ‘0′;
 - negative: como será apresentado valores negativo. Caso seja configurado ‘()’, ele irá colocar o número entre os parênteses, caso contrário irá colocar o valor na frente do número (por exemplo ‘-’ acarreta em ‘-R$100,00′). O padrão é ‘()’;
 - escape: ignorar códigos HTML. O padrão é verdadeiro (true).
Além disso, o padrão de ‘before’ aqui é vazio e não ‘$’. Valores entre -1 e 1 serão colocados em centavos, portanto é necessário definir o valor de ‘after’. Exemplos:

1
2
3
4
$number->currency(10.20); // Retornará '10.20'
$number->currency(10.20, 'USD'); // Retornará '$10.20'
$number->currency(0.56, 'USD'); // Retornará '56c'
$number->currency(345323.234, '', array('after'=>'R$', 'thousands'=>'.', 'decimals'=>',')); // Retornará 'R$345.323,23'

É isso aí… Qualquer coisa é só perguntar.

Powered by WordPress