FM
Valores default em TDBCombo e TDBSeekButton
Fechado
Olá amigos,
Estou começando agora com o Adianti e me deparei com dois pequenos probleminhas que não consegui descobrir como consertar.
Tenho em meu form um TDBCombo que ao entrar no mode edição não vem com o valor salvo pré-selecionado.
Em relação TDBSeekButton, ao entrar no modo edição, apenas o campo com o código vem preenchido, mas o nome não vem.
Para ficar mais claro, segue abaixo o código do formulário:
desde já agradeço a quem puder dar uma luz.
Estou começando agora com o Adianti e me deparei com dois pequenos probleminhas que não consegui descobrir como consertar.
Tenho em meu form um TDBCombo que ao entrar no mode edição não vem com o valor salvo pré-selecionado.
Em relação TDBSeekButton, ao entrar no modo edição, apenas o campo com o código vem preenchido, mas o nome não vem.
Para ficar mais claro, segue abaixo o código do formulário:
- <?php
- /**
- * SipeDocumentosForm Form
- * @author <your name here>
- */
- class SipeDocumentosForm extends TPage
- {
- protected $form; // form
-
- /**
- * Form constructor
- * @param $param Request
- */
- public function __construct( $param )
- {
- parent::__construct();
-
- // creates the form
- $this->form = new TQuickForm('form_SipeDocumentos');
- $this->form->class = 'tform'; // change CSS class
- $this->form = new BootstrapFormWrapper($this->form);
- $this->form->style = 'display: table;width:100%'; // change style
-
- // define the form title
- $this->form->setFormTitle('SipeDocumentos');
-
- $criteria = new TCriteria;
- $criteria->add(new TFilter('secdep_cliente', '=', TSession::getValue('client')));
- // create the form fields
- $doc_id = new TEntry('doc_id');
- $doc_tipo_documento = new TCombo('doc_tipo_documento');
- $doc_numero = new TEntry('doc_numero');
- $doc_orgao_emissor = new TEntry('doc_orgao_emissor');
- $doc_datareceb = new TDate('doc_datareceb');
- $doc_recebido_por = new TEntry('doc_recebido_por');
- $doc_encaminhado_para = new TEntry('doc_encaminhado_para');
- $doc_recebido = new TCombo('doc_recebido');
- //este combo abaixo, ao editar os dados do formulário aparece em branco e não com o valor salvo no banco já por default.
- $doc_destino = new TDBCombo('doc_destino_id','sipe','SipeSecDepto','secdep_id','secdep_secretaria','secdep_secretaria',$criteria);
- $doc_entregue_por = new ">TDBSeekButton('doc_entregue_por', 'sipe', 'form_SipeDocumentos', 'SipeFuncionarios', 'func_NOME', 'doc_entregue_por', 'doc_entregue_por_name');
-
- //neste campo abaixo deveria aparacer o nome do funcionário quando entra no form para editar os dados.
- $doc_entregue_por_name = new TEntry('doc_entregue_por_name');
- $doc_historico = new TText('doc_historico');
- $tp_doc = array('Oficio'=>'Oficio',
- 'Requerimento'=>'Requerimento',
- 'Comunicacao Interna'=>'Comunicacao Interna',
- 'Declaracao'=>'Declaracao',
- 'Outros'=>'Outros');
- $doc_tipo_documento->additems($tp_doc);
-
- $doc_recebido->additems(array('1'=>'Sim','0'=>'Não'));
-
- $doc_entregue_por_name->setEditable(false);
- $doc_entregue_por_name->setSize(400);
-
- $doc_datareceb->setMask('dd/mm/yyyy');
-
- // add the fields
- $this->form->addQuickField('ID', $doc_id, 100 );
- $this->form->addQuickField('Tipo Documento', $doc_tipo_documento, 200 , new TRequiredValidator);
- $this->form->addQuickField('Número', $doc_numero, 200 , new TRequiredValidator);
- $this->form->addQuickField('Orgão Emissor', $doc_orgao_emissor, 400 , new TRequiredValidator);
- $this->form->addQuickField('Data Receb.', $doc_datareceb, 100 , new TRequiredValidator);
- $this->form->addQuickField('Recebido Por', $doc_recebido_por, 400 , new TRequiredValidator);
- $this->form->addQuickField('Encaminhado Para', $doc_encaminhado_para, 400 , new TRequiredValidator);
- $this->form->addQuickField('Recebido', $doc_recebido, 100 , new TRequiredValidator);
- $this->form->addQuickField('Destino', $doc_destino, 400 , new TRequiredValidator);
- $this->form->addQuickField('Entregue Por', $doc_entregue_por, 100 , new TRequiredValidator);
- $this->form->addQuickField('Nome Entregue Por', $doc_entregue_por_name, 400);
- $this->form->addQuickField('Histórico', $doc_historico, 400 , new TRequiredValidator);
- $doc_recebido->setValue(0);
- $doc_historico->setSize(400,200);
- if (!empty($doc_id))
- {
- $doc_id->setEditable(FALSE);
- }
-
- /** samples
- $this->form->addQuickFields('Date', array($date1, new TLabel('to'), $date2)); // side by side fields
- $fieldX->addValidation( 'Field X', new TRequiredValidator ); // add validation
- $fieldX->setSize( 100, 40 ); // set size
- **/
-
- // create the form actions
- $this->form->addQuickAction(_t('Save'), new TAction(array($this, 'onSave')), 'fa:floppy-o');
- $this->form->addQuickAction(_t('New'), new TAction(array($this, 'onClear')), 'bs:plus-sign green');
- $this->form->addQuickAction(_t('Back to the listing'), new TAction(array('SipeDocumentosList', 'onReload')), 'fa:angle-left blue');
-
-
- // vertical box container
- $container = new TVBox;
- $container->style = 'width: 90%';
- // $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
- $container->add(TPanelGroup::pack('Title', $this->form));
-
- parent::add($container);
- }
- /**
- * Save form data
- * @param $param Request
- */
- public function onSave( $param )
- {
- try
- {
- TTransaction::open('sipe'); // open a transaction
-
- /**
- // Enable Debug logger for SQL operations inside the transaction
- TTransaction::setLogger(new TLoggerSTD); // standard output
- TTransaction::setLogger(new TLoggerTXT('log.txt')); // file
- **/
-
- $this->form->validate(); // validate form data
-
- $object = new SipeDocumentos; // create an empty object
- $data = $this->form->getData(); // get form data as array
- $object->fromArray( (array) $data); // load the object with data
-
-
- $object->doc_datareceb = TDate::date2us($object->doc_datareceb);
-
- $object->store(); // save the object
-
- // get the generated doc_id
- $data->doc_id = $object->doc_id;
-
- $this->form->setData($data); // fill form data
- TTransaction::close(); // close the transaction
-
- new TMessage('info', TAdiantiCoreTranslator::translate('Record saved'));
- }
- catch (Exception $e) // in case of exception
- {
- new TMessage('error', $e->getMessage()); // shows the exception error message
- $this->form->setData( $this->form->getData() ); // keep form data
- TTransaction::rollback(); // undo all pending operations
- }
- }
-
- /**
- * Clear form data
- * @param $param Request
- */
- public function onClear( $param )
- {
- $this->form->clear();
- }
-
- /**
- * Load object to form data
- * @param $param Request
- */
- public function onEdit( $param )
- {
- try
- {
- if (isset($param['key']))
- {
- $key = $param['key']; // get the parameter $key
- TTransaction::open('sipe'); // open a transaction
- $object = new SipeDocumentos($key); // instantiates the Active Record
-
- $object->doc_datareceb = TDate::date2br($object->doc_datareceb);
-
- $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', $e->getMessage()); // shows the exception error message
- TTransaction::rollback(); // undo all pending operations
- }
- }
- }
- ?>
desde já agradeço a quem puder dar uma luz.
Olá Fabiano.
Vou te dar uma luz quanto a questão do TDBSeekButton!
Para que o campo nome seja carregado com o seu devido nome você vai ter que criar no seu model um método com o nome get_algumacoisaporexemplo.
Abaixo segue um exemplo que fiz para carregar o nome do fornecedor em um TDBSeekButton!
Depois de ter criado este método você deve alterar esta linha:
Por esta:
Repare que, algumacoisaporexemplo se refere ao nome que você atribui depois do get_ lá no seu model!
Espero ter lhe ajudado!
Muito obrigado pela ajuda Ricelli.
Segui as suas dicas e funcionou perfeitamente. Valeu!!!!!
Ok Fabiano.
Agora é tentar achar uma solução para o TDBCombo mão é mesmo!
Consegui resolver a questão do TDBCombo. na verdade foi erro meu. Eu mudei o nome do campo na tabela e esqueci de atualizar no Control, rsrsrs
Agora está td perfeito.