Formatação Campo TDate para Formato Brasileiro Olá pessoal, Preciso de uma ajuda de vocês!!! Estou utilizando o Template ERP2 onde criei um formulário com um campo data dessa forma: Quando clico no campo abre o calendário em português, até aqui tudo bem! Só que quando eu escolho a data, a mesma preenche o campo no formato ano/mês/dia. só que quando vou salvar preciso...
RC
Formatação Campo TDate para Formato Brasileiro  
Fechado
Olá pessoal,

Preciso de uma ajuda de vocês!!!

Estou utilizando o Template ERP2 onde criei um formulário com um campo data dessa forma:
 
  1. <?php $data_consulta = new TDate('dataconsulta'); ?>


Quando clico no campo abre o calendário em português, até aqui tudo bem! Só que quando eu escolho a data, a mesma preenche o campo no formato ano/mês/dia.

só que quando vou salvar preciso converter a mesma em ano/mês/dia

Como faço para o campo ser preenchido no formato: dia/mês/ano e posteriormente converter ele para o formato anterior (formato americano) para salvar na base de dados?

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 (3)


LJ

Após ler do banco de dados deve tranformar em formato br
$object->data_consulta = TDate::date2br($object->data_consulta );
e antes de gravar transformar para formato do BD
$object->data_consulta = TDate::date2us($object->data_consulta );
mais ou menos como esta abaixo


 
  1. <?php
  2. $data_consulta = new TDate('dataconsulta'); ?>


$data_consulta ->setMask('dd/mm/yyyy');

function onEdit($param)
{
try
{
if (isset($param['key']))
{
$key=$param['key']; // get the parameter $key
TTransaction::open('permission'); // open a transaction
$object = new Apontamento($key); // instantiates the Active Record
// preenche o campo titulo da ordem e da tarefa
$object->titulo = $object->OrdemDeServico->titulo;
$object->tarefa_descricao = $object->Tarefa->descricao;
$object->data_consulta = TDate::date2br($object->data_consulta );
$this->form->setData($object); // fill the form
TTransaction::close(); // close the transaction
$this->onReload();
}
else
{
$this->form->clear();
$object = new StdClass;
$object->usuario_id = TSession::getValue('loginID');
$object->name = TSession::getValue('username');
$object->data_consulta = date("d-m-Y");
$this->form->setData($object);
}
}
catch (Exception $e) // in case of exception
{
new TMessage('error', 'Error ' . $e->getMessage()); // shows the exception error message
TTransaction::rollback(); // undo all pending operations
}

function onSave()
{
try
{
TTransaction::open('permission');

$object = $this->form->getData('Apontamento');
$this->form->validate();
$object->data_consulta = TDate::date2us($object->data_consulta );
$object->store();
TTransaction::close();

new TMessage('info', 'Registro Salvo');
// reload the listing
$this->onReload();
}
catch (Exception $e)
{
new TMessage('error','Erro '.$e->getMessage());
TTransaction::rollback();
}
}

?>
RC

Olá Luiz Jampolsky.

Eu consegui formatar a data para o padrão dd/mm/yyyy com sucesso seguindo seu exemplo!

Agora vi que vc alterou os metódos chamado onEdit e onSave! Onde encontro esses metódos para fazer tal alteração? Falo isso porque na minha aplicação não tem definido essas funções e ainda assim estou conseguindo salvar e editar.

Abaixo segue o código do meu formulaŕio:

 
  1. <?php
  2. class SystemAgendaForm extends TStandardForm
  3. {
  4. protected $form;
  5. function __construct()
  6. {
  7. parent::__construct();
  8. $this->form = new TQuickForm('form_SystemAgenda');
  9. $this->form->setFormTitle(_t('Agenda'));
  10. $this->form->class = 'tform';
  11. // defines the database
  12. parent::setDatabase('permission');
  13. // defines the active record
  14. parent::setActiveRecord('SystemAgenda');
  15. $id = new TEntry('id');
  16. $exame = new TEntry('exame');
  17. $paciente = new TEntry('paciente');
  18. $dataconsulta = new TDate('dataconsulta');
  19. $id->setEditable(false);
  20. $dataconsulta->setMask('dd/mm/yyyy');
  21. // add the fields
  22. $this->form->addQuickField('ID', $id, 50);
  23. $this->form->addQuickField(_t('Examination') . ': ', $exame, 200);
  24. $this->form->addQuickField(_t('Patient') . ': ', $paciente, 200);
  25. $this->form->addQuickField('Data Consulta' . ': ', $dataconsulta, 200);
  26. // validations
  27. $exame->addValidation(_t('Examination'), new TRequiredValidator);
  28. $paciente->addValidation(('Patient'), new TRequiredValidator);
  29. // add form actions
  30. $this->form->addQuickAction(_t('Save'), new TAction(array($this, 'onSave')), 'ico_save.png');
  31. $this->form->addQuickAction(_t('New'), new TAction(array($this, 'onEdit')), 'ico_new.png');
  32. $this->form->addQuickAction(_t('Back to the listing'),new TAction(array('SystemAgendaList','onReload')),'ico_datagrid.png');
  33. $container = new TTable;
  34. $container->style = 'width: 80%';
  35. $container->addRow()->addCell(new TXMLBreadCrumb('menu.xml','SystemAgendaList'));
  36. $container->addRow()->addCell($this->form);
  37. // add the form to the page
  38. parent::add($container);
  39. }
  40. }
  41. ?>

PD

Ricelli,

Você está estendendo TStandardForm. Lá está a funcionalidade.
TStandardForm provê um comportamento padrão.

Você precisará estender TPage, e escrever os método onEdit() e onSave()
na mão se quiser mudar o comportamento.

Ex:
www.adianti.com.br/framework_files/tutor/index.php?class=CompleteFor

Att,