Zend_Currency

116 views
Skip to first unread message

Adonai

unread,
Jun 24, 2010, 7:28:00 AM6/24/10
to Zend Framework Brasil
Olá pessoal,

Estou com um problema besta:

Estou usando o Zend_Currency para formatar os valores monetários em um
e-commerce, porém, eu queria mudar o symbol sem precisar adicionar os
parametros toda vez que fosse instanciar a classe ex:

mudar de R$ p/ ESTALECA
$currency = new Zend_Currency(
array(
'value' => 100,
'symbol' => 'ESTALECA',
)
);

eu queria que viesse por padrão o symbol que eu definisse. Tentei o
seguinte procedimento sem sucesso:
$currency = new Zend_Currency($locale);
$currency->setFormat(array('symbol'=>'R$ '));
$registry->set('Zend_Currency', $currency );

Alguma sugestão ?

Obrigado

Wesley Willians

unread,
Jun 24, 2010, 7:37:09 AM6/24/10
to zfbr...@googlegroups.com
Olha o jeito que vc fez não é dos mais elegantes, o legal é vc definir um locale padrão para seu sistema e ele então adotar a moeda.

Na forma que fez acho apenas que error no registry.

na última linha faça: 
$registry->set('currency', $currency );

Logo depois basta fazer:

$c = Zend_Registry::get('currency);

echo $c->toCurrency(500);

--
@wesleywillians
www.schoolofnet.com


2010/6/24 Adonai <adona...@gmail.com>

--
Essa mensagem faz parte do grupo "zfbrasil" no Google Groups.
Para escrever neste grupo, envie um email para zfbr...@googlegroups.com
Para se desligar do grupo, envie um email para zfbrasil-u...@googlegroups.com
Mais informações, visite o grupo em http://groups.google.com/group/zfbrasil?hl=pt-BR

Paulo Vitor Bettini de Albuqerque Lima

unread,
Jun 24, 2010, 7:41:16 AM6/24/10
to zfbr...@googlegroups.com
Talvez seja o caso de você estender a classe currency, pra sua moeda. daí tu instancia a sua classe e não mais a currency.

Sacou?

Atenciosamente,
Paulo Vitor Bettini de Albuquerque Lima

----
I enjoy the massacre of ads. This sentence will slaughter ads without a messy bloodbath.
Eu não gosto de anúncios do google nos meus emails...


2010/6/24 Wesley Willians <wesleyw...@gmail.com>

Rafael Armenio

unread,
Jun 24, 2010, 7:43:04 AM6/24/10
to zfbr...@googlegroups.com
tenho esse post no meu blog:

Zend Currency 0

mai12

Bom, este post será rápido e ensinará a formatar valores em moeda/dinheiro em php, utilizando o Zend_Currency, do Zend Framework.

Para isso, precisamos de duas informações fundamentais:

  1. localidade -> ex: pt_BR ou en_US
  2. valor -> ex: 1290.01 ou 10.00 ou 0.25

Obs: é importante que o valor esteja sempre no formato citado acima, sem separador para as casas de milhares e com “.” (ponto) separando as casas decimais.

Com as informações acima, já podemos formatar o valor desejado, para isso, pode ser usado o seguinte código:

try{
$currency = new Zend_Currency(‘pt_BR‘);
echo $currency->toCurrency(1000);
}catch(Zend_Currency_Exception $e){
//tratamento de erro
}

Resultado: R$ 1.000,00

Concluindo: A moeda será formatada de acordo com a localidade, isso funciona muito bem em casos de internacionalização, além dos casos simples, que a localidade pode ser sempre fixa.



2010/6/24 Wesley Willians <wesleyw...@gmail.com>



--
Atenciosamente,

Rafael Armênio

Analista de Sistemas

twitter: http://twitter.com/rafael_armenio
email: rafael....@gmail.com
msn: rafael_...@msn.com
talk: rafael....@gmail.com
skype: rafael.armenio
cel: +55 (41) 8492-8195

Wesley Willians

unread,
Jun 24, 2010, 7:45:08 AM6/24/10
to zfbr...@googlegroups.com
Boa!

--
@wesleywillians
www.schoolofnet.com


2010/6/24 Paulo Vitor Bettini de Albuqerque Lima <paulov...@gmail.com>

Adonai

unread,
Jun 24, 2010, 8:06:32 AM6/24/10
to Zend Framework Brasil
Obrigado pela coalboração, isso já ajuda bastante.

Outra dúvida:
Teria só como eu substituir o valor do symbol do Locale pt_BR usando
o translate ou algo do tipo ?


On 24 jun, 08:37, Wesley Willians <wesleywilli...@gmail.com> wrote:
> Olha o jeito que vc fez não é dos mais elegantes, o legal é vc definir um
> locale padrão para seu sistema e ele então adotar a moeda.
>
> Na forma que fez acho apenas que error no registry.
>
> na última linha faça:
> $registry->set('currency', $currency );
>
> Logo depois basta fazer:
>
> $c = Zend_Registry::get('currency);
>
> echo $c->toCurrency(500);
>
> --
> @wesleywillianswww.schoolofnet.com
>
> 2010/6/24 Adonai <adonai.c...@gmail.com>

Paulo Vitor Bettini de Albuqerque Lima

unread,
Jun 24, 2010, 8:10:10 AM6/24/10
to zfbr...@googlegroups.com
Alterar um componente não é a melhor forma de se fazer manutenção. Mais adequado é criar uma nova peça de código através do uso de herança. Isso vai garantir compatibilidade com futuras versões e também garante que você não vá quebrar seu software em outros pontos.


Atenciosamente,
Paulo Vitor Bettini de Albuquerque Lima

----
I enjoy the massacre of ads. This sentence will slaughter ads without a messy bloodbath.
Eu não gosto de anúncios do google nos meus emails...


2010/6/24 Adonai <adona...@gmail.com>

adonai cruz

unread,
Jun 24, 2010, 8:44:26 AM6/24/10
to zfbr...@googlegroups.com
Obrigado Paulo,
Na verdade o cliente queria que adicionasse um espaço depois do cifrão (R$99,00 p/  R$ 99,00) e acabou virando uma dor de cabeça.
agradeço a ajuda
Att
Adonai Cruz

Stephan A. de Souza

unread,
Jun 24, 2010, 6:36:23 PM6/24/10
to zfbr...@googlegroups.com
Desativa a opção de mostrar o cifrão, e põe na mão? :)

2010/6/24 adonai cruz <adona...@gmail.com>



--
Analista de Sistemas Ação Direta : www.acaodireta.com.br | p...@acaodireta.com.br
Follow on Twitter: http://twitter.com/bladed
Administrador HxBr.net | http://hxbr.net
Reply all
Reply to author
Forward
0 new messages