filter para zend input

Zend_Controller, Zend_Controller_Action, Zend_Controller_Dispatcher, Zend_Controller_Plugin, Zend_Controller_RewriteRouter, Zend_View, Zend_Http_Request, Zend_Http_Response

Moderador: chackal_sjc

filter para zend input

Mensagempor vital.ivan » Seg Nov 09, 2009 9:28 am

Olá amigos,

Estou desenvolvendo minha primeira aplicação em php e escolhi o zend framework, pois achei mais completo e com uma comunidade bem participativa.

Até agora, consegui me virar com o material disponível no site do zend framework, através de pesquisas no google, livros (zf in action), etc...

Minha aplicação já tem autenticação, salva a senha encriptada, envia email, tranfere arquivo via ftp, salva os cadastros no Bd, faço consultas, tenho relatório...

mas um problema fui deixando para reolver mais tarde e agora não consigo encontrar a solução. O problema é o seguinte:

Tenho um form, com um input o qual a aplicaçaõ espera receber um valor númerico real, com duuas casas decimais, tipo: [999.999,99].

ocorre que se o usuário digita o valor assim [999999.99] não há problema, entretanto, se o gajo digita com formato [999.999,99], ocorre erro, o valor que é salvo no banco de dados é de 1.000,00.

Acredito que um filtro, possa resolver o problema, aguem pode me ajudar?
Se tiver um link para documentação sobre todos filters para input ou um código para criar um filter o qual possa tratar a retirada desta formatação eu agradeço.


A defição do elemento no zend_form é a seguinte:

Código: Selecionar tudo
      
$valor = $this->createElement('text','valor');
$valor->setLabel('Valor:')
         ->setAttrib('size',13)
    ->setAttrib('maxlength',13)
    ->setRequired ( false )
    ->addFilter('StripTags')
    ->addFilter('StringTrim')
    ->setDecorators($this->elementDecorators);


Obrigado,

Ivan Maia
vital.ivan
Leitor
 
Mensagens: 2
Data de registro: Seg Nov 09, 2009 8:40 am

Re: filter para zend input

Mensagempor vital.ivan » Seg Nov 09, 2009 10:43 am

Pessoal, fiz mais algumas pesquisas e encontrei algo que acho que pode resolver, entretanto não estou tendo bons resultados...

Pelo material que encontrei, no prórpio manual do zf, eu deveria usar um filtro Zend_Filter_LocalizedToNormalized. Então alterei meu código no form que ficou assim:

Código: Selecionar tudo
   $locale = new Zend_Locale('pt_BR');
   $filter = new Zend_Filter_LocalizedToNormalized(array('precision' => 3, 'locale' => $locale));
   $valor = $this->createElement('text','valor_moeda');
        $valor->setLabel('Valor:')
                ->setAttrib('size',13)
      ->setAttrib('maxlength',13)
      ->setRequired ( false )
      ->addFilter('StripTags')
      ->addFilter('StringTrim')
      ->addFilter($filter)
      ->setDecorators($this->elementDecorators);


Mas ainda continuo com problemas, por exemplo quando digito no form um valor assim: 9,99, envio para o banco: 9. quando digito o valor assim: 9.99, envio para o banco o valor correto: 9.99. ou seja, parece que ele não está considerando o locale.

Alguma idéia?


Grato,

Ivan Maia.
vital.ivan
Leitor
 
Mensagens: 2
Data de registro: Seg Nov 09, 2009 8:40 am

Re: filter para zend input

Mensagempor danieldeveloper » Seg Nov 09, 2009 7:54 pm

Cara, eu acho que não tem nada com o locale, e sim que seu banco de dados não aceita ',' no campo de moeda, e sim '.'

vc pode user "str_replace" para trocar ',' por '.' caso o usuário digite com ','

Acho que é isso!

Abs
danieldeveloper.com
danieldeveloper
Participante
 
Mensagens: 45
Data de registro: Sex Mai 08, 2009 11:31 am


Retornar para Model-View-Controller (MVC)

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 1 visitante