Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Campo somente Leitura Olá amigos, bom dia! Estou engatinhando no Framework e estou com uma dúvida com relação a campos de apresentação e que sejam somente de leitura. Exemplo: Tenho um formulário de cadastro de contas a receber e contas a pagar onde uso o TDBSeekButton para trazer as informações de Cliente/Favorecido Plano de contas e Centro de custo, até ai tudo certinho, porém ao gravar o registro os...
GO
Campo somente Leitura  
Fechado
Olá amigos, bom dia!

Estou engatinhando no Framework e estou com uma dúvida com relação a campos de apresentação e que sejam somente de leitura.

Exemplo: Tenho um formulário de cadastro de contas a receber e contas a pagar onde uso o TDBSeekButton para trazer as informações de Cliente/Favorecido Plano de contas e Centro de custo, até ai tudo certinho, porém ao gravar o registro os campos de informação não aparecem, creio que tenha que fazer alguma rotina na Classe Modelo.
Vou postar as duas classes e uma imagem do formulário para um melhor entendimento.











Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (27)


GO

  1. <?php
  2. /**
  3.  * Lancamento Active Record
  4.  * @author  <your-name-here>
  5.  */
  6. class Lancamento extends TRecord
  7. {
  8.     const TABLENAME 'lancamento';
  9.     const PRIMARYKEY'id';
  10.     const IDPOLICY =  'serial'// {max, serial}
  11.     
  12.     
  13.     private $contato;
  14.     private $plano_conta;
  15.     private $centro_custo;
  16.     /**
  17.      * Constructor method
  18.      */
  19.     public function __construct($id NULL$callObjectLoad TRUE)
  20.     {
  21.         parent::__construct($id$callObjectLoad);
  22.         parent::addAttribute('contato_id');
  23.         parent::addAttribute('plano_conta_id');
  24.         parent::addAttribute('centro_custo_id');
  25.         parent::addAttribute('bordero_id');
  26.         parent::addAttribute('documento');
  27.         parent::addAttribute('historico');
  28.         parent::addAttribute('data_emissao');
  29.         parent::addAttribute('data_vencimento');
  30.         parent::addAttribute('data_pagamento');
  31.         parent::addAttribute('valor_emitido');
  32.         parent::addAttribute('desconto');
  33.         parent::addAttribute('juros');
  34.         parent::addAttribute('valor_documento');
  35.         parent::addAttribute('valor_recebido');
  36.         parent::addAttribute('tipo_conta');
  37.         parent::addAttribute('tipo_lancamento');
  38.     }
  39.     
  40.     /**
  41.      * Method set_contato
  42.      * Sample of usage: $lancamento->contato = $object;
  43.      * @param $object Instance of Contato
  44.      */
  45.     public function set_contato(Contato $object)
  46.     {
  47.         $this->contato $object;
  48.         $this->contato_id $object->id;
  49.     }
  50.     
  51.     /**
  52.      * Method get_contato
  53.      * Sample of usage: $lancamento->contato->attribute;
  54.      * @returns Contato instance
  55.      */
  56.     public function get_contato()
  57.     {
  58.         // loads the associated object
  59.         if (empty($this->contato))
  60.             $this->contato = new Contato($this->contato_id);
  61.     
  62.         // returns the associated object
  63.         return $this->contato;
  64.     }
  65.     
  66.     
  67.     /**
  68.      * Method set_plano_conta
  69.      * Sample of usage: $lancamento->plano_conta = $object;
  70.      * @param $object Instance of PlanoConta
  71.      */
  72.     public function set_plano_conta(PlanoConta $object)
  73.     {
  74.         $this->plano_conta $object;
  75.         $this->plano_conta_id $object->id;
  76.     }
  77.     
  78.     /**
  79.      * Method get_plano_conta
  80.      * Sample of usage: $lancamento->plano_conta->attribute;
  81.      * @returns PlanoConta instance
  82.      */
  83.     public function get_plano_conta()
  84.     {
  85.         // loads the associated object
  86.         if (empty($this->plano_conta))
  87.             $this->plano_conta = new PlanoConta($this->plano_conta_id);
  88.     
  89.         // returns the associated object
  90.         return $this->plano_conta;
  91.     }
  92.     
  93.     
  94.     /**
  95.      * Method set_centro_custo
  96.      * Sample of usage: $lancamento->centro_custo = $object;
  97.      * @param $object Instance of CentroCusto
  98.      */
  99.     public function set_centro_custo(CentroCusto $object)
  100.     {
  101.         $this->centro_custo $object;
  102.         $this->centro_custo_id $object->id;
  103.     }
  104.     
  105.     /**
  106.      * Method get_centro_custo
  107.      * Sample of usage: $lancamento->centro_custo->attribute;
  108.      * @returns CentroCusto instance
  109.      */
  110.     public function get_centro_custo()
  111.     {
  112.         // loads the associated object
  113.         if (empty($this->centro_custo))
  114.             $this->centro_custo = new CentroCusto($this->centro_custo_id);
  115.     
  116.         // returns the associated object
  117.         return $this->centro_custo;
  118.     }
  119.     
  120. }
  121. </code>



GO

  1. <?php
  2. /**
  3.  * LancamentoForm Registration
  4.  * @author  <your name here>
  5.  */
  6. class LancamentoForm extends TPage
  7. {
  8.     private $form// form
  9.     
  10.     /**
  11.      * Class constructor
  12.      * Creates the page and the registration form
  13.      */
  14.     function __construct()
  15.     {
  16.         parent::__construct();
  17.         
  18.         // creates the form
  19.         $this->form = new TQuickForm('form_Lancamento');
  20.         $this->form->setFormTitle('Lançamento de contas');
  21.         $this->form->class 'tform';
  22.         
  23.         // create the form fields
  24.         $id                             = new TEntry('id');
  25.         $tipo_conta                     = new TEntry('tipo_conta');
  26.         $tipo_lancamento                = new TCombo('tipo_lancamento');
  27.         
  28.         $contato_id                     = new  ">TDBSeekButton('contato_id''conexaomysql''form_Lancamento''Contato''Razao_Social''contato_id''Razao_Social');        
  29.         $Razao_Social                   = new TEntry('Razao_Social');
  30.         
  31.         $plano_conta_id                 = new  ">TDBSeekButton('plano_conta_id''conexaomysql''form_Lancamento''PlanoConta''plano_conta''plano_conta_id''conta');        
  32.         $conta                          = new TEntry('conta');
  33.         
  34.         $centro_custo_id                = new  ">TDBSeekButton('centro_custo_id''conexaomysql''form_Lancamento''CentroCusto''centro_custo''centro_custo_id''centro_custo');
  35.         $centro_custo                   = new TEntry('centro_custo');
  36.         
  37.         $documento                      = new TEntry('documento');
  38.         $historico                      = new TEntry('historico');
  39.         $data_emissao                   = new TDate('data_emissao');
  40.         $data_vencimento                = new TDate('data_vencimento');
  41.         $data_pagamento                 = new TDate('data_pagamento');
  42.         $valor_emitido                  = new TEntry('valor_emitido');
  43.         $desconto                       = new TEntry('desconto');
  44.         $juros                          = new TEntry('juros');
  45.         $valor_documento                = new TEntry('valor_documento');
  46.         $valor_recebido                 = new TEntry('valor_recebido');
  47.         
  48.         
  49.         
  50.         
  51.         $combo_items = array();
  52.         $combo_items['CP'] ='Conta a Pagar';
  53.         $combo_items['CR'] ='Conta a Receber';
  54.         $tipo_lancamento->addItems($combo_items);
  55.         // define the sizes
  56.         $id->setSize(100);
  57.         $id->setEditable(FALSE);
  58.         $tipo_conta->setSize(200);
  59.         $tipo_lancamento->setSize(200);
  60.         $contato_id->setSize(100);
  61.         $Razao_Social->setSize(400);
  62.         $Razao_Social->setEditable(FALSE);
  63.         $plano_conta_id->setSize(100);
  64.         $conta->setSize(400);
  65.         $conta->setEditable(FALSE);
  66.         $centro_custo_id->setSize(100);
  67.         $centro_custo->setSize(400);
  68.         $centro_custo->setEditable(FALSE);
  69.         $documento->setSize(100);
  70.         $historico->setSize(100);
  71.         $data_emissao->setSize(100);
  72.         $data_vencimento->setSize(100);
  73.         $data_pagamento->setSize(100);
  74.         $valor_emitido->setSize(100);
  75.         $desconto->setSize(100);
  76.         $juros->setSize(100);
  77.         $valor_documento->setSize(100);
  78.         $valor_recebido->setSize(100);
  79.  
  80.         // validations
  81.         //$tipo_conta->addValidation('tipo_conta', new TRequiredValidator);
  82.         $tipo_lancamento->addValidation('Tipo Lançamento', new TRequiredValidator);
  83.         $contato_id->addValidation('Contato', new TRequiredValidator);
  84.         $plano_conta_id->addValidation('Conta', new TRequiredValidator);
  85.         $historico->addValidation('Historico', new TRequiredValidator);
  86.         $data_emissao->addValidation('Emissão', new TRequiredValidator);
  87.         $data_vencimento->addValidation('Vencimento', new TRequiredValidator);
  88.         $valor_emitido->addValidation('Valor Emitido', new TRequiredValidator);
  89.         $valor_documento->addValidation('Valor Documento', new TRequiredValidator);
  90.         // add one row for each form field
  91.         $this->form->addQuickFields('Código:', array($id));
  92.         $this->form->addQuickFields('Tipo de Lançamento:', array($tipo_lancamento));
  93.         $this->form->addQuickFields('Contato:', array($contato_id$Razao_Social));
  94.         $this->form->addQuickFields('Conta Financeira:', array($plano_conta_id$conta));
  95.         $this->form->addQuickFields('Centro de Custo:', array($centro_custo_id$centro_custo));
  96.         $this->form->addQuickFields('Documento:', array($documento));
  97.         $this->form->addQuickFields('Histórico:', array($historico));
  98.         $this->form->addQuickFields('Emissão:', array($data_emissao));
  99.         $this->form->addQuickFields('vencimento:', array($data_vencimento));
  100.         $this->form->addQuickFields('Pagamento:', array($data_pagamento));
  101.         $this->form->addQuickFields('Valor emitido:', array($valor_emitido));
  102.         $this->form->addQuickFields('Desconto:', array($desconto));
  103.         $this->form->addQuickFields('Juros:', array($juros));
  104.         $this->form->addQuickFields('Valor documento:', array($valor_documento));
  105.         $this->form->addQuickFields('Valor Recebido:', array($valor_recebido));
  106.         $this->form->setFields(array($id,$tipo_conta,$tipo_lancamento,$contato_id,$plano_conta_id,$centro_custo_id,$documento,$historico,$data_emissao,$data_vencimento,$data_pagamento,$valor_emitido,$desconto,$juros,$valor_documento,$valor_recebido));
  107.         // create the form actions
  108.         $save_button TButton::create('save', array($this'onSave'), _t('Save'), 'ico_save.png');
  109.         $new_button  TButton::create('new',  array($this'onEdit'), _t('New'),  'ico_new.png');
  110.         
  111.         $this->form->addField($save_button);
  112.         $this->form->addField($new_button);
  113.         
  114.         $buttons_box = new THBox;
  115.         $buttons_box->add($save_button);
  116.         $buttons_box->add($new_button);
  117.         
  118.         parent::add($this->form);
  119.         parent::add($buttons_box);
  120.     }
  121.     /**
  122.      * method onSave()
  123.      * Executed whenever the user clicks at the save button
  124.      */
  125.     function onSave()
  126.     {
  127.         try
  128.         {
  129.             TTransaction::open('conexaomysql'); // open a transaction
  130.             
  131.             // get the form data into an active record Lancamento
  132.             $object $this->form->getData('Lancamento');
  133.             $this->form->validate(); // form validation
  134.             $object->store(); // stores the object
  135.             $this->form->setData($object); // keep form data
  136.             TTransaction::close(); // close the transaction
  137.             
  138.             // shows the success message
  139.             new TMessage('info'TAdiantiCoreTranslator::translate('Record saved'));
  140.         }
  141.         catch (Exception $e// in case of exception
  142.         {
  143.             new TMessage('error''<b>Error</b> ' $e->getMessage()); // shows the exception error message
  144.             $this->form->setData$this->form->getData() ); // keep form data
  145.             TTransaction::rollback(); // undo all pending operations
  146.         }
  147.     }
  148.     
  149.     /**
  150.      * method onEdit()
  151.      * Executed whenever the user clicks at the edit button da datagrid
  152.      */
  153.     function onEdit($param)
  154.     {
  155.         try
  156.         {
  157.             if (isset($param['key']))
  158.             {
  159.                 $key=$param['key'];  // get the parameter $key
  160.                 TTransaction::open('conexaomysql'); // open a transaction
  161.                 $object = new Lancamento($key); // instantiates the Active Record
  162.                 $this->form->setData($object); // fill the form
  163.                 TTransaction::close(); // close the transaction
  164.             }
  165.             else
  166.             {
  167.                 $this->form->clear();
  168.             }
  169.         }
  170.         catch (Exception $e// in case of exception
  171.         {
  172.             new TMessage('error''<b>Error</b> ' $e->getMessage()); // shows the exception error message
  173.             TTransaction::rollback(); // undo all pending operations
  174.         }
  175.     }
  176. }
  177. </code>
</your>
GE

Estou tendo o mesmo problema.
Esse componente retorna no um array com o valor do indice = id selecionado e value do array é a label.
até ai, pra salvar eu consegui, o problema foi na hora do exibir um campo no form.

Quando chama o metodo onEdit, esse componente vai esperar o array da mesma maneira.
FC

É simples os campos somente leitura não estão na sua classe Lançamento então quando vc salva o Framework devolve pelo sendo data faltando esses campos para corrigir altere a linha onSave de ... ->getData(); tirando o Lançamento assim retornará. Todos os objetos do foram

Da mesma no onEdit antes de.sendData vc coloca usa o getcontato para buscar a informação e preencher o form
FC

Eita corretor ortográfico do celular hauahia onde é foram é form e sendo data é setData.
GO

function onSave() { try { TTransaction::open('conexaomysql'); // open a transaction // get the form data into an active record Lancamento $object = $this->form->getData('Lancamento'); $this->form->validate(); // form validation $object->store(); // stores the object $this->form->setData($object); // keep form data // Esse campo é que quero recuperar o valor, seria esse o procedimento? Se for ainda não consegui fazer funcionar $Razao_Social->getName; 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 } }
LC

Os campos/variaveis: $Razao_Socia, $conta, $centro_custo, estão faltando em: $this->form->setFields
Deve ser por isso.
GO

function onSave() { try { TTransaction::open('conexaomysql'); // open a transaction // get the form data into an active record Lancamento $object = $this->form->getData('Lancamento'); $this->form->validate(); // form validation $object->store(); // stores the object $this->form->setData($object); // keep form data // Esse campo é que quero recuperar o valor, seria esse o procedimento? Se for ainda não consegui fazer funcionar $Razao_Social->getName; 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 } }
GO

Ops, vou olhar aqui Leandro.
Te agradeço!
GO

É que esses campos não são persistidos Leandro, eles dever ser colocados ali da mesma forma?
GO

Não é isso, coloquei e deu erro.
Te agradeço pela atenção e vou continuar insistindo aqui.
Valeu!
LC

Pelo q sei todos os campos tem que ficar no setFields.
Passa o erro que deu, depois de ter colocado, talvez ajude a descobrir.
GO

Olá Leandro, boa tarde!

Além de colocar os campos no setFields precisei também criar o método Get para cada um deles na classe que faz a associação, veja o exemplo de um deles:

public function get_contato() { // loads the associated object if (empty($this->contato)) $this->contato = new Contato($this->contato_id); // returns the associated object return $this->contato; } public function get_contato_Razao_Social() { // loads the associated object if (empty($this->contato)) $this->contato = new Contato($this->contato_id); // returns the associated object return $this->contato->Razao_Social; }


Agora ao clicar no botão gravar os campos recebem o valor da classe, porém quando clico na grid para selecionar o registro que quero editar os campos são trazidos em branco, tem idéia de como posso resolver?
LC

Na classe contato existe o atributo Razao_Social ?
GO

Sim, existe!
LC

Com letras maiusculas no inicio ?
GO

Sim, veja você mesmo:

  1. <?php
  2. /**
  3.  * Contato Active Record
  4.  * @author  <your-name-here>
  5.  */
  6. class Contato extends TRecord
  7. {
  8.     const TABLENAME 'contato';
  9.     const PRIMARYKEY'id';
  10.     const IDPOLICY =  'serial'// {max, serial}
  11.     
  12.     
  13.     private $categoria_contato;
  14.     /**
  15.      * Constructor method
  16.      */
  17.     public function __construct($id NULL$callObjectLoad TRUE)
  18.     {
  19.         parent::__construct($id$callObjectLoad);
  20.         parent::addAttribute('Razao_Social');
  21.         parent::addAttribute('categoria_contato_id');
  22.         parent::addAttribute('Fantasia');
  23.         parent::addAttribute('status');
  24.         parent::addAttribute('endereco');
  25.         parent::addAttribute('bairro');
  26.         parent::addAttribute('cep');
  27.         parent::addAttribute('cidade');
  28.         parent::addAttribute('estado');
  29.         parent::addAttribute('cpf_cnpj');
  30.         parent::addAttribute('rg_ie');
  31.         parent::addAttribute('telefone_1');
  32.         parent::addAttribute('telefone_2');
  33.         parent::addAttribute('telefone_3');
  34.         parent::addAttribute('email_1');
  35.         parent::addAttribute('email_2');
  36.         parent::addAttribute('observacao');
  37.         parent::addAttribute('data_cadastro');
  38.         parent::addAttribute('dia_vencimento');
  39.     }
  40.     
  41.     /**
  42.      * Method set_categoria_contato
  43.      * Sample of usage: $contato->categoria_contato = $object;
  44.      * @param $object Instance of CategoriaContato
  45.      */
  46.     public function set_categoria_contato(CategoriaContato $object)
  47.     {
  48.         $this->categoria_contato $object;
  49.         $this->categoria_contato_id $object->id;
  50.     }
  51.     
  52.     /**
  53.      * Method get_categoria_contato
  54.      * Sample of usage: $contato->categoria_contato->attribute;
  55.      * @returns CategoriaContato instance
  56.      */
  57.     public function get_categoria_contato()
  58.     {
  59.         // loads the associated object
  60.         if (empty($this->categoria_contato))
  61.             $this->categoria_contato = new CategoriaContato($this->categoria_contato_id);
  62.     
  63.         // returns the associated object
  64.         return $this->categoria_contato;
  65.     }
  66.     
  67. }
  68. </code>
FC

Troque
$object = $this->form->getData('Lancamento');

Por
$object = $this->form->getData();
GO

Olá Felipe, boa noite!

Já fiz o que você me aconselhou cara mas não funciona, quando clico na grid de listagem para editar um registro esses campos que gostaria de visualizar continuam chegando vazios. :/


Classe LancamentoForm
  1. <?php
  2. /**
  3.  * LancamentoForm Registration
  4.  * @author  <your name here>
  5.  */
  6. class LancamentoForm extends TPage
  7. {
  8.     private $form// form
  9.     
  10.     /**
  11.      * Class constructor
  12.      * Creates the page and the registration form
  13.      */
  14.     function __construct()
  15.     {
  16.         parent::__construct();
  17.         
  18.         // creates the form
  19.         $this->form = new TQuickForm('form_Lancamento');
  20.         $this->form->setFormTitle('Lançamento de contas');
  21.         $this->form->class 'tform';
  22.         
  23.         // create the form fields
  24.         $id                             = new TEntry('id');
  25.         $tipo_conta                     = new TEntry('tipo_conta');
  26.         $tipo_lancamento                = new TCombo('tipo_lancamento');
  27.         
  28.         $contato_id                     = new  ">TDBSeekButton('contato_id''conexaomysql''form_Lancamento''Contato''Razao_Social''contato_id''Razao_Social');        
  29.         $Razao_Social                   = new TEntry('Razao_Social');
  30.         
  31.         $plano_conta_id                 = new  ">TDBSeekButton('plano_conta_id''conexaomysql''form_Lancamento''PlanoConta''plano_conta''plano_conta_id''descricao_plano_conta');        
  32.         $descricao_plano_conta          = new TEntry('descricao_plano_conta');
  33.         
  34.         $centro_custo_id                = new  ">TDBSeekButton('centro_custo_id''conexaomysql''form_Lancamento''CentroCusto''centro_custo''centro_custo_id''descricao_centro_custo');
  35.         $descricao_centro_custo         = new TEntry('descricao_centro_custo');
  36.         
  37.         $documento                      = new TEntry('documento');
  38.         $historico                      = new TEntry('historico');
  39.         $data_emissao                   = new TDate('data_emissao');
  40.         $data_vencimento                = new TDate('data_vencimento');
  41.         $data_pagamento                 = new TDate('data_pagamento');
  42.         $valor_emitido                  = new TEntry('valor_emitido');
  43.         $desconto                       = new TEntry('desconto');
  44.         $juros                          = new TEntry('juros');
  45.         $valor_documento                = new TEntry('valor_documento');
  46.         $valor_recebido                 = new TEntry('valor_recebido');
  47.         
  48.         
  49.         
  50.         
  51.         
  52.         
  53.         $combo_items = array();
  54.         $combo_items['CP'] ='Conta a Pagar';
  55.         $combo_items['CR'] ='Conta a Receber';
  56.         $tipo_lancamento->addItems($combo_items);
  57.         // define the sizes
  58.         $id->setSize(100);
  59.         $id->setEditable(FALSE);
  60.         $tipo_conta->setSize(200);
  61.         $tipo_lancamento->setSize(200);
  62.         $contato_id->setSize(100);
  63.         $Razao_Social->setSize(400);
  64.         $Razao_Social->setEditable(FALSE);
  65.         $plano_conta_id->setSize(100);
  66.         $descricao_plano_conta->setSize(400);
  67.         $descricao_plano_conta->setEditable(FALSE);
  68.         $centro_custo_id->setSize(100);
  69.         $descricao_centro_custo->setSize(400);
  70.         $descricao_centro_custo->setEditable(FALSE);
  71.         $documento->setSize(100);
  72.         $historico->setSize(100);
  73.         $data_emissao->setSize(100);
  74.         $data_vencimento->setSize(100);
  75.         $data_pagamento->setSize(100);
  76.         $valor_emitido->setSize(100);
  77.         $desconto->setSize(100);
  78.         $juros->setSize(100);
  79.         $valor_documento->setSize(100);
  80.         $valor_recebido->setSize(100);
  81.  
  82.         // validations
  83.         //$tipo_conta->addValidation('tipo_conta', new TRequiredValidator);
  84.         $tipo_lancamento->addValidation('Tipo Lançamento', new TRequiredValidator);
  85.         $contato_id->addValidation('Contato', new TRequiredValidator);
  86.         $plano_conta_id->addValidation('Conta', new TRequiredValidator);
  87.         $historico->addValidation('Historico', new TRequiredValidator);
  88.         $data_emissao->addValidation('Emissão', new TRequiredValidator);
  89.         $data_vencimento->addValidation('Vencimento', new TRequiredValidator);
  90.         $valor_emitido->addValidation('Valor Emitido', new TRequiredValidator);
  91.         $valor_documento->addValidation('Valor Documento', new TRequiredValidator);
  92.         // add one row for each form field
  93.         $this->form->addQuickFields('Código:', array($id));
  94.         $this->form->addQuickFields('Tipo de Lançamento:', array($tipo_lancamento));
  95.         $this->form->addQuickFields('Contato:', array($contato_id$Razao_Social));
  96.         $this->form->addQuickFields('Conta Financeira:', array($plano_conta_id$descricao_plano_conta));
  97.         $this->form->addQuickFields('Centro de Custo:', array($centro_custo_id$descricao_centro_custo));
  98.         $this->form->addQuickFields('Documento:', array($documento));
  99.         $this->form->addQuickFields('Histórico:', array($historico));
  100.         $this->form->addQuickFields('Emissão:', array($data_emissao));
  101.         $this->form->addQuickFields('vencimento:', array($data_vencimento));
  102.         $this->form->addQuickFields('Pagamento:', array($data_pagamento));
  103.         $this->form->addQuickFields('Valor emitido:', array($valor_emitido));
  104.         $this->form->addQuickFields('Desconto:', array($desconto));
  105.         $this->form->addQuickFields('Juros:', array($juros));
  106.         $this->form->addQuickFields('Valor documento:', array($valor_documento));
  107.         $this->form->addQuickFields('Valor Recebido:', array($valor_recebido));
  108.         $this->form->setFields(array($id,$tipo_conta,$tipo_lancamento,$contato_id,$plano_conta_id,$centro_custo_id,$documento,$historico,$data_emissao,$data_vencimento,$data_pagamento,$valor_emitido,$desconto,$juros,$valor_documento,$valor_recebido,$Razao_Social,$descricao_plano_conta,$descricao_centro_custo));
  109.         // create the form actions
  110.         $save_button TButton::create('save', array($this'onSave'), _t('Save'), 'ico_save.png');
  111.         $new_button  TButton::create('new',  array($this'onEdit'), _t('New'),  'ico_new.png');
  112.         
  113.         $this->form->addField($save_button);
  114.         $this->form->addField($new_button);
  115.         
  116.         $buttons_box = new THBox;
  117.         $buttons_box->add($save_button);
  118.         $buttons_box->add($new_button);
  119.         
  120.         parent::add($this->form);
  121.         parent::add($buttons_box);
  122.     }
  123.     /**
  124.      * method onSave()
  125.      * Executed whenever the user clicks at the save button
  126.      */
  127.     function onSave()
  128.     {
  129.         try
  130.         {
  131.             TTransaction::open('conexaomysql'); // open a transaction
  132.             
  133.             // get the form data into an active record Lancamento
  134.             //$object = $this->form->getData('Lancamento');
  135.             $object $this->form->getData();
  136.             $this->form->validate(); // form validation
  137.             $object->store(); // stores the object
  138.             $this->form->setData($object); // keep form data
  139.             TTransaction::close(); // close the transaction
  140.             
  141.             // shows the success message
  142.             new TMessage('info'TAdiantiCoreTranslator::translate('Record saved'));
  143.         }
  144.         catch (Exception $e// in case of exception
  145.         {
  146.             new TMessage('error''<b>Error</b> ' $e->getMessage()); // shows the exception error message
  147.             $this->form->setData$this->form->getData() ); // keep form data
  148.             TTransaction::rollback(); // undo all pending operations
  149.         }
  150.     }
  151.     
  152.     /**
  153.      * method onEdit()
  154.      * Executed whenever the user clicks at the edit button da datagrid
  155.      */
  156.     function onEdit($param)
  157.     {
  158.         try
  159.         {
  160.             if (isset($param['key']))
  161.             {
  162.                 $key=$param['key'];  // get the parameter $key
  163.                 TTransaction::open('conexaomysql'); // open a transaction
  164.                 $object = new Lancamento($key); // instantiates the Active Record
  165.                 $this->form->setData($object); // fill the form
  166.                 TTransaction::close(); // close the transaction
  167.             }
  168.             else
  169.             {
  170.                 $this->form->clear();
  171.             }
  172.         }
  173.         catch (Exception $e// in case of exception
  174.         {
  175.             new TMessage('error''<b>Error</b> ' $e->getMessage()); // shows the exception error message
  176.             TTransaction::rollback(); // undo all pending operations
  177.         }
  178.     }
  179. }
  180. </code>


</your>
FC

Isso que te passei é para colocar no onSave no onEdit vc precisa colocar seu campo = seumodel->getvariavel();

Antes do setData OK Abraços...
GO

Bom dia Felipe!
Seria esse código abaixo?

function onEdit($param) { try { if (isset($param['key'])) { $key=$param['key']; // get the parameter $key TTransaction::open('conexaomysql'); // open a transaction $object = new Lancamento($key); // instantiates the Active Record // Tentatina de implementação $Razao_Social = $object->get_contato_Razao_Social; $descricao_centro_custo= $object->get_centro_custo_centro_custo; $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 } }
FC

Isso mesmo porém a variável tem que estar como objeto StdClass

$Razao_Social = new StdClass;
$descricao_centro_custo = new StdClass;

$Razao_Social = $object->get_contato_Razao_Social;
$descricao_centro_custo= $object->get_centro_custo_centro_custo;

Boa sorte !
GO

Olá Felipe, bom dia!

Resolvi o problema em alimentar as variáveis porém elas não fazem parte do objeto que alimenta o form e creio que por isso elas não aparecem no mesmo.
Essa é uma maneira de tratar o problema?
Segui o exemplo da página 65 do livro do framework;

Resolvi dessa forma:

function onEdit($param) { try { if (isset($param['key'])) { $key=$param['key']; // get the parameter $key TTransaction::open('conexaomysql'); // open a transaction $object = new Lancamento($key); // instantiates the Active Record $Razao_Social = $object->contato->Razao_Social; $descricao_centro_custo = $object->centro_custo->centro_custo; $descricao_plano_conta = $object->plano_conta->plano_conta; // Tentativa de implementação echo $Razao_Social; echo $descricao_centro_custo; echo $descricao_plano_conta; // Eu vejo o conteúdo das variáveis escrito na tela $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 } }

FC

Esqueci de colocar o valor dentro do $object que vai no setData tenta assim :

$object->Razao_Social = $object->contato->Razao_Social;
$this->form->setData($object); // fill the form
GO

Perfeito Felipe!

Te agradeço muito pela atenção!
Um forte abraço!


GO

Solução para o problema!

function onEdit($param) { try { if (isset($param['key'])) { $key=$param['key']; // get the parameter $key TTransaction::open('conexaomysql'); // open a transaction $object = new Lancamento($key); // instantiates the Active Record $object->Razao_Social = $object->contato->Razao_Social; $object->descricao_plano_conta = $object->plano_conta->plano_conta; $object->descricao_centro_custo = $object->centro_custo->centro_custo; $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 } }
PD

People,

Nesse exemplo (www.adianti.com.br/framework_files/tutor/index.php?class=CustomerFor) foi necessário trazer o nome da cidade (city_name). Basta que a classe de clientes tenha o método get_city_name(). O método é executado indiretamente no momento de preencher o formulário.

Abs,