Formatar Campo Data em FormList Bom dia, Consegui fazer a manipulação e conversão de datas através de um exemplo aqui do fórum. Porém nos formlist's as datas aparecem com o formato americano, ou seja, o formato que está no banco. Como posso formatar os campos datas para aparecerem no formato brasileiro nos formlist's e datagrid's?...
DA
Formatar Campo Data em FormList  
Fechado
Bom dia,

Consegui fazer a manipulação e conversão de datas através de um exemplo aqui do fórum.
Porém nos formlist's as datas aparecem com o formato americano, ou seja, o formato que está no banco.
Como posso formatar os campos datas para aparecerem no formato brasileiro nos formlist's e datagrid's?

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (8)


ES

Basta efetuar a alteração na hora do carregamento da lista, seja em relatório ou datagrid, usar o método TDate::date2br($date) e não se esqueça de fazer o contrário no momento de salvar caso o campo esteja com máscara.

att.
Eliezer
LD

Eliezer poderia dar um exemplo?
ES

Olá Leandro, faça o seguinte:

Quando você vai carregar sua listagem, fez a consulta ao banco de dados e teve o retorno do objeto tabela $objects tipo:
 
  1. <?php $objects = $repository->load($criteria); ?>

no momento em que fizer chamada foreach que você deverá aplicar a transformação, siga o código abaixo

 
  1. <?php if ($objects)
  2. {
  3. foreach ($objects as $produto){
  4. $produto->data = TDate::date2br($produto->data);
  5. }
  6. }
  7. ?>


Essa forma serve para a listagem e relatórios também.

Caso você precise que a data seja preenchida normalmente em um formulário durante o preenchimento use a máscara:

 
  1. <?php $data->setMask("99/99/9999"); ?>


porém, se você usar esse método, no momento de salvar você terá que voltar o formato para o americano, daí basta utilizar:

 
  1. <?php $object->data = TDate::date2us($object->data);
  2. $object->store; ?>


Espero ter ajudado.

abs.

Eliezer


PD

Lembrando que a TDate::setMask aceita parâmetros como ('dd/mm/yyyy'):
www.adianti.com.br/api-framework-widget_web-form-TDate#setMask

abs,
Pablo
LD

Eliezer ajudou bastante muito obrigado.
AS

Eliezer, ajudou muito. Obrigado!!!
RK

Boa noite pessoal.
Estou tentando aplicar o date2br ou date2us no BootstrapFormBuilder, porém não estou tendo êxito.
Recebo erros de que a função (date2br) espera uma string.
Se tento converter o TDate em string ele também dá erro dizendo que o TDate não pode ser convertido em string.
Quando aplico a mascara ao campo, ele continua trazendo no formato do banco (yyyy-mm-dd) e aplica a máscara apenas se eu alterar algo, e quando o faço, acaba gravando a data no formato errado no banco.
Não sei se procurei com os termos corretos, pois não achei nada que se aplique na formatação de datas no BootstrapFormBuilder.

Segue meu código atual (sem nenhuma tratativa de conversão)
 
  1. <?php
  2. // cria o campo do formulario
  3. $birthdate = new TDate('birthdate');
  4. // adiciona a linha
  5. $this->form->addFields( [new TLabel(_t('Birthdate'))], [$birthdate] );
  6. // dimensiona
  7. $birthdate->setSize('100%');
  8. ?>



Já tentei fazer assim:
 
  1. <?php
  2. $birthdate = TDate::date2br('birthdate');
  3. ?>



... e assim:
 
  1. <?php
  2. $this->form->addFields( [new TLabel(_t('Birthdate'))], [TDate::date2br($birthdate)] );
  3. ?>



... e assim:
 
  1. <?php
  2. $this->form->addFields( [new TLabel(_t('Birthdate'))], [TDate::date2br((string)$birthdate)] );
  3. ?>



... e assim:
 
  1. <?php
  2. $birthdate->setMask('dd/mm/yyyy');
  3. ?>


Tentei inclusive fazer uma função própria, alterando a existente (date2br) que utiliza o substr, usando o explode... sem sucesso, caio no mesmo erro da string.

Provavelmente deve ser algo muito fácil que não estou sabendo fazer. Se alguém puder dar uma luz... serei imensamente grato.
Pelo que percebi o BootstrapFormBuilder é muito prático, porém as tratativas de receber os dados e de gravar os dados não é muito parametrizável.

Alguma ideia/recomendação dos amigos?

abs a todos.
WF

Eu consegui assim [resolvido]

$column_Venc_Conta->setTransformer(array($this, 'formatarData'));



public function formatDate($date)
{
$dt = explode('/', $date);
$retorno = $dt[2].'-'.$dt[1].'-'.$dt[0];
return $retorno;
}
public function FormatarData($date)
{
$dt = explode('-', $date);
$retorno = $dt[2].'/'.$dt[1].'/'.$dt[0];
return $retorno;
}