JD
[BUG][DUVIDA] - Usando dois TDate no mesmo form
Fechado
Olá pessoal, estou com um problema estranho ao utilizar dois TDate no mesmo form, quando utilizo dois TDate um deles, mais precisamente o segundo que foi adicionado, fica sem o "data-picker" enquanto que o outro apresenta dois.
Estou enviando o anexo com um print do form, notem os campos "Entrega Doc:" e "Data de Fundacao:"
Vou deixar o código também.
Deste já agradeço qualquer ajuda.
Obrigado.
Estou enviando o anexo com um print do form, notem os campos "Entrega Doc:" e "Data de Fundacao:"
Vou deixar o código também.
Deste já agradeço qualquer ajuda.
Obrigado.
<?php/** * ClientefinanceiroForm Registration * @author Jheferson Fonseca Gonçalves */class ClientefinanceiroForm extends TPage{ protected $form; // form /** * Class constructor * Creates the page and the registration form */ function __construct() { parent::__construct(); // creates the notebook // creates the form $this->form = new TForm('form_Clientefinanceiro'); $this->form->class = 'tform'; // CSS class $this->form->style = 'width: 100%'; $page1 = new TTable; $page2 = new TTable; $page3 = new TTable; $page4 = new TTable; // add a table inside form $page1-> width = '100%'; $page1->style = 'width: 100%'; // add a row for the form title $row = $page1->addRow(); $row->class = 'tformtitle'; // CSS class $row->addCell( new TLabel('Cliente') )->colspan = 2; // create the form fields $cod = new TEntry('cod'); $nome = new TEntry('nome'); $cnpj = new TEntry('cnpj'); $estado = new TEntry('estado'); $data_doc = new TDate('data_doc'); $capital = new TEntry('capital'); $data_fundacao = new TDate('data_fundacao'); $limite_credito = new TEntry('limite_credito'); $responsavel = new TEntry('responsavel'); $representante = new TEntry('representante'); $municipio = new TEntry('municipio'); $observacoes = new TText('observacoes'); // define the sizes $cod->setSize(200); $nome->setSize(200); $cnpj->setSize(100); $estado->setSize(200); $data_doc->setSize(150); $capital->setSize(200); $data_fundacao->setSize(150); $limite_credito->setSize(200); $responsavel->setSize(200); $representante->setSize(200); $municipio->setSize(200); $observacoes->setSize(200, 40); // validations //$cod->addValidation('cod', new TRequiredValidator); $nome->addValidation('nome', new TRequiredValidator); $cnpj->addValidation('cnpj', new TRequiredValidator); $estado->addValidation('estado', new TRequiredValidator); // add one row for each form field $page1->addRowSet( $label_cod = new TLabel('Cod:'), $cod ); //$label_cod->setFontColor('#FF0000'); $page1->addRowSet( $label_nome = new TLabel('Nome:'), $nome ); $label_nome->setFontColor('#FF0000'); $page1->addRowSet( $label_cnpj = new TLabel('CNPJ:'), $cnpj ); $label_cnpj->setFontColor('#FF0000'); $page1->addRowSet( new TLabel('Municipio:'), $municipio ); $page1->addRowSet( $label_estado = new TLabel('Estado:'), $estado ); $label_estado->setFontColor('#FF0000'); $page1->addRowSet( new TLabel('Entrega Doc:'), $data_doc ); $page1->addRowSet( new TLabel('Capital:'), $capital ); $page1->addRowSet( new TLabel('Data de Fundacao:'), $data_fundacao ); $page1->addRowSet( new TLabel('Limite De Crédito:'), $limite_credito ); $page1->addRowSet( new TLabel('Responsável:'), $responsavel ); $page1->addRowSet( new TLabel('Representante:'), $representante ); $page1->addRowSet( new TLabel('Observação:'), $observacoes ); $this->form->setFields(array($cod,$nome,$cnpj,$estado,$data_doc,$capital,$data_fundacao,$limite_credito,$responsavel,$representante,$municipio,$observacoes)); // create the form actions $save_button = TButton::create('save', array($this, 'onSave'), _t('Save'), 'ico_save.png'); $new_button = TButton::create('new', array($this, 'onEdit'), _t('New'), 'ico_new.png'); $this->form->addField($save_button); $this->form->addField($new_button); $buttons_box = new THBox; $buttons_box->add($save_button); $buttons_box->add($new_button); // add a row for the form action $row = $page1->addRow(); $row->class = 'tformaction'; // CSS class $row->addCell($buttons_box)->colspan = 2; $notebook = new TNotebook('100%',630); $notebook->appendPage('Dados Básicos', $page1); $notebook->appendPage('Sócios', $page2); $notebook->appendPage('Fornecedores/Ref', $page3); $notebook->appendPage('Histórico/Limites', $page4); $this->form->add($notebook); $vbox = new TVBox; $vbox->add(new TXMLBreadCrumb('menu.xml', 'ClientefinanceiroForm')); $vbox->add($this->form); $vbox->style = "width: 100%"; parent::add($vbox); } /** * method onSave() * Executed whenever the user clicks at the save button */ function onSave() { try { TTransaction::open('dados'); // open a transaction // get the form data into an active record Clientefinanceiro $object = $this->form->getData('Clientefinanceiro'); $this->form->validate(); // form validation $object->store(); // stores the object $this->form->setData($object); // keep form data TTransaction::close(); // close the transaction // shows the success message new TMessage('info', TAdiantiCoreTranslator::translate('Record saved')); } catch (Exception $e) // in case of exception { new TMessage('error', '<b>Error</b> ' . $e->getMessage()); // shows the exception error message $this->form->setData( $this->form->getData() ); // keep form data TTransaction::rollback(); // undo all pending operations } } /** * method onEdit() * Executed whenever the user clicks at the edit button da datagrid */ function onEdit($param) { try { if (isset($param['key'])) { $key=$param['key']; // get the parameter $key TTransaction::open('dados'); // open a transaction $object = new Clientefinanceiro($key); // instantiates the Active Record $this->form->setData($object); // fill the form TTransaction::close(); // close the transaction } else { $this->form->clear(); } } catch (Exception $e) // in case of exception { new TMessage('error', '<b>Error</b> ' . $e->getMessage()); // shows the exception error message TTransaction::rollback(); // undo all pending operations } }}?>
Isso ocorre principalmente com o vertrigo troque pelo wamp ou atualize a versão de seu PHP.
Estou utilizando o Xampp com PHP 5.6.11
Compilação do xampp não roda legal com o adianti mude para o wamp que resolve.
Entendi...
Não há nenhuma configuração que resolva o problema no Xampp ?
Pensei que o Adianti não dependesse de configurações no servidor, isso vai ser um problema.
Na empresa onde trabalho é utilizado o xampp, que já está com o Apache devidamente configurado para rodar algumas aplicações COM e .NET
Se souber de alguma maneira de resolver o problema sem trocar o pacote do servidor fico muito agradecido.
Obrigado.
Não é aconselhável usar o xamp em ambiente de produção, porém como te falei é um problema que pode ser resolvido atualizando a versão do PHP, senão me engano tem alguns tutoriais na net mostrando como atualizar o xamp tente atualizar numa máquina a parte para testar.
Atualizei para o PHP 5.6.15 e o erro continua.
Vou experimentar na maquina local utilizando o wamp pra ver se resolve.
Obrigado.
não esqueça de limpar o cache dos navegadores.
tb tinha esse problema quando usava wamps da vida...
caso utilize windows como SO, eu recomendo baixar o VBox,
configurar uma maquina virtual com ubuntu, instalar php, apache, base de dados, samba, e mapear no windows e começar a desenvolver.
Ou ainda você instalar os dois sistemas operacionais e gerenciar o uso pelo GRUB (é o que faço atualmente).
Acessei o site do Wamp Server e verifiquei que a versão do php dele é a 5.5 o que não me agrada por não ser muito recente.
Confesso que não tenho experiencia com Wamp Server e isso me assusta um pouco, nunca tive problemas com o Xampp, está é a primeira vez.
Criar uma maquina virtual apenas para rodar um web server não acho legal, devido ao consumo de recursos que uma maquina virtual exige.
Um amigo meu utiliza o adianti com o Xampp vou ver com ele se ele teve este problema, estou suspeitando que a causa não é o Xampp e sim a versão ou configuração do PHP, afinal é o nucleo do PHP que é responsável por executar o código.
E tanto o Wamp quanto o Xampp ou um hambiente individual (Apache/PHP) deve ter o mesmo retorno do código, se a versão e o nucleo do php for o mesmo.
De qualquer forma as especificações do Adianti dizem o seguinte:
Independente de plataforma;
Compatível com PHP5.X;
Não necessita configuração especial para setup (Apenas descompacte e use);
Ou seja, ter que mudar o pacote de web server, criar uma maquina virtual com outro SO ou mudar versão do PHP do 5.6.11 pra outra versão inferior até 5.0 é fugir destes conceitos.
Agradeço a ajuda e compreensão de todos.
Como já havia imaginado a causa do problema não é o Xampp...
Verifiquei que no construtor da classe TDate é setado um id da seguinte maneira:
Note que é utilizado a função uniqid() do PHP que gera um id "UNICO" de acordo com o tempo atual em milionésimos de segundo, porém identifiquei no html da tela que os dois campos estavam com o mesmo ID e esta é a verdadeira causa do problema.
Resolvi o problema trocando a função uniqid() para:
E assim garanti que fosse gerado um ID unico e o bug foi resolvido.