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 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 (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. private $contato;
  12. private $plano_conta;
  13. private $centro_custo;
  14. /**
  15. * Constructor method
  16. */
  17. public function __construct($id = NULL, $callObjectLoad = TRUE)
  18. {
  19. parent::__construct($id, $callObjectLoad);
  20. parent::addAttribute('contato_id');
  21. parent::addAttribute('plano_conta_id');
  22. parent::addAttribute('centro_custo_id');
  23. parent::addAttribute('bordero_id');
  24. parent::addAttribute('documento');
  25. parent::addAttribute('historico');
  26. parent::addAttribute('data_emissao');
  27. parent::addAttribute('data_vencimento');
  28. parent::addAttribute('data_pagamento');
  29. parent::addAttribute('valor_emitido');
  30. parent::addAttribute('desconto');
  31. parent::addAttribute('juros');
  32. parent::addAttribute('valor_documento');
  33. parent::addAttribute('valor_recebido');
  34. parent::addAttribute('tipo_conta');
  35. parent::addAttribute('tipo_lancamento');
  36. }
  37. /**
  38. * Method set_contato
  39. * Sample of usage: $lancamento->contato = $object;
  40. * @param $object Instance of Contato
  41. */
  42. public function set_contato(Contato $object)
  43. {
  44. $this->contato = $object;
  45. $this->contato_id = $object->id;
  46. }
  47. /**
  48. * Method get_contato
  49. * Sample of usage: $lancamento->contato->attribute;
  50. * @returns Contato instance
  51. */
  52. public function get_contato()
  53. {
  54. // loads the associated object
  55. if (empty($this->contato))
  56. $this->contato = new Contato($this->contato_id);
  57. // returns the associated object
  58. return $this->contato;
  59. }
  60. /**
  61. * Method set_plano_conta
  62. * Sample of usage: $lancamento->plano_conta = $object;
  63. * @param $object Instance of PlanoConta
  64. */
  65. public function set_plano_conta(PlanoConta $object)
  66. {
  67. $this->plano_conta = $object;
  68. $this->plano_conta_id = $object->id;
  69. }
  70. /**
  71. * Method get_plano_conta
  72. * Sample of usage: $lancamento->plano_conta->attribute;
  73. * @returns PlanoConta instance
  74. */
  75. public function get_plano_conta()
  76. {
  77. // loads the associated object
  78. if (empty($this->plano_conta))
  79. $this->plano_conta = new PlanoConta($this->plano_conta_id);
  80. // returns the associated object
  81. return $this->plano_conta;
  82. }
  83. /**
  84. * Method set_centro_custo
  85. * Sample of usage: $lancamento->centro_custo = $object;
  86. * @param $object Instance of CentroCusto
  87. */
  88. public function set_centro_custo(CentroCusto $object)
  89. {
  90. $this->centro_custo = $object;
  91. $this->centro_custo_id = $object->id;
  92. }
  93. /**
  94. * Method get_centro_custo
  95. * Sample of usage: $lancamento->centro_custo->attribute;
  96. * @returns CentroCusto instance
  97. */
  98. public function get_centro_custo()
  99. {
  100. // loads the associated object
  101. if (empty($this->centro_custo))
  102. $this->centro_custo = new CentroCusto($this->centro_custo_id);
  103. // returns the associated object
  104. return $this->centro_custo;
  105. }
  106. }
  107. </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. * Class constructor
  11. * Creates the page and the registration form
  12. */
  13. function __construct()
  14. {
  15. parent::__construct();
  16. // creates the form
  17. $this->form = new TQuickForm('form_Lancamento');
  18. $this->form->setFormTitle('Lançamento de contas');
  19. $this->form->class = 'tform';
  20. // create the form fields
  21. $id = new TEntry('id');
  22. $tipo_conta = new TEntry('tipo_conta');
  23. $tipo_lancamento = new TCombo('tipo_lancamento');
  24. $contato_id = new ">TDBSeekButton('contato_id', 'conexaomysql', 'form_Lancamento', 'Contato', 'Razao_Social', 'contato_id', 'Razao_Social');
  25. $Razao_Social = new TEntry('Razao_Social');
  26. $plano_conta_id = new ">TDBSeekButton('plano_conta_id', 'conexaomysql', 'form_Lancamento', 'PlanoConta', 'plano_conta', 'plano_conta_id', 'conta');
  27. $conta = new TEntry('conta');
  28. $centro_custo_id = new ">TDBSeekButton('centro_custo_id', 'conexaomysql', 'form_Lancamento', 'CentroCusto', 'centro_custo', 'centro_custo_id', 'centro_custo');
  29. $centro_custo = new TEntry('centro_custo');
  30. $documento = new TEntry('documento');
  31. $historico = new TEntry('historico');
  32. $data_emissao = new TDate('data_emissao');
  33. $data_vencimento = new TDate('data_vencimento');
  34. $data_pagamento = new TDate('data_pagamento');
  35. $valor_emitido = new TEntry('valor_emitido');
  36. $desconto = new TEntry('desconto');
  37. $juros = new TEntry('juros');
  38. $valor_documento = new TEntry('valor_documento');
  39. $valor_recebido = new TEntry('valor_recebido');
  40. $combo_items = array();
  41. $combo_items['CP'] ='Conta a Pagar';
  42. $combo_items['CR'] ='Conta a Receber';
  43. $tipo_lancamento->addItems($combo_items);
  44. // define the sizes
  45. $id->setSize(100);
  46. $id->setEditable(FALSE);
  47. $tipo_conta->setSize(200);
  48. $tipo_lancamento->setSize(200);
  49. $contato_id->setSize(100);
  50. $Razao_Social->setSize(400);
  51. $Razao_Social->setEditable(FALSE);
  52. $plano_conta_id->setSize(100);
  53. $conta->setSize(400);
  54. $conta->setEditable(FALSE);
  55. $centro_custo_id->setSize(100);
  56. $centro_custo->setSize(400);
  57. $centro_custo->setEditable(FALSE);
  58. $documento->setSize(100);
  59. $historico->setSize(100);
  60. $data_emissao->setSize(100);
  61. $data_vencimento->setSize(100);
  62. $data_pagamento->setSize(100);
  63. $valor_emitido->setSize(100);
  64. $desconto->setSize(100);
  65. $juros->setSize(100);
  66. $valor_documento->setSize(100);
  67. $valor_recebido->setSize(100);
  68. // validations
  69. //$tipo_conta->addValidation('tipo_conta', new TRequiredValidator);
  70. $tipo_lancamento->addValidation('Tipo Lançamento', new TRequiredValidator);
  71. $contato_id->addValidation('Contato', new TRequiredValidator);
  72. $plano_conta_id->addValidation('Conta', new TRequiredValidator);
  73. $historico->addValidation('Historico', new TRequiredValidator);
  74. $data_emissao->addValidation('Emissão', new TRequiredValidator);
  75. $data_vencimento->addValidation('Vencimento', new TRequiredValidator);
  76. $valor_emitido->addValidation('Valor Emitido', new TRequiredValidator);
  77. $valor_documento->addValidation('Valor Documento', new TRequiredValidator);
  78. // add one row for each form field
  79. $this->form->addQuickFields('Código:', array($id));
  80. $this->form->addQuickFields('Tipo de Lançamento:', array($tipo_lancamento));
  81. $this->form->addQuickFields('Contato:', array($contato_id, $Razao_Social));
  82. $this->form->addQuickFields('Conta Financeira:', array($plano_conta_id, $conta));
  83. $this->form->addQuickFields('Centro de Custo:', array($centro_custo_id, $centro_custo));
  84. $this->form->addQuickFields('Documento:', array($documento));
  85. $this->form->addQuickFields('Histórico:', array($historico));
  86. $this->form->addQuickFields('Emissão:', array($data_emissao));
  87. $this->form->addQuickFields('vencimento:', array($data_vencimento));
  88. $this->form->addQuickFields('Pagamento:', array($data_pagamento));
  89. $this->form->addQuickFields('Valor emitido:', array($valor_emitido));
  90. $this->form->addQuickFields('Desconto:', array($desconto));
  91. $this->form->addQuickFields('Juros:', array($juros));
  92. $this->form->addQuickFields('Valor documento:', array($valor_documento));
  93. $this->form->addQuickFields('Valor Recebido:', array($valor_recebido));
  94. $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));
  95. // create the form actions
  96. $save_button = TButton::create('save', array($this, 'onSave'), _t('Save'), 'ico_save.png');
  97. $new_button = TButton::create('new', array($this, 'onEdit'), _t('New'), 'ico_new.png');
  98. $this->form->addField($save_button);
  99. $this->form->addField($new_button);
  100. $buttons_box = new THBox;
  101. $buttons_box->add($save_button);
  102. $buttons_box->add($new_button);
  103. parent::add($this->form);
  104. parent::add($buttons_box);
  105. }
  106. /**
  107. * method onSave()
  108. * Executed whenever the user clicks at the save button
  109. */
  110. function onSave()
  111. {
  112. try
  113. {
  114. TTransaction::open('conexaomysql'); // open a transaction
  115. // get the form data into an active record Lancamento
  116. $object = $this->form->getData('Lancamento');
  117. $this->form->validate(); // form validation
  118. $object->store(); // stores the object
  119. $this->form->setData($object); // keep form data
  120. TTransaction::close(); // close the transaction
  121. // shows the success message
  122. new TMessage('info', TAdiantiCoreTranslator::translate('Record saved'));
  123. }
  124. catch (Exception $e) // in case of exception
  125. {
  126. new TMessage('error', '<b>Error</b> ' . $e->getMessage()); // shows the exception error message
  127. $this->form->setData( $this->form->getData() ); // keep form data
  128. TTransaction::rollback(); // undo all pending operations
  129. }
  130. }
  131. /**
  132. * method onEdit()
  133. * Executed whenever the user clicks at the edit button da datagrid
  134. */
  135. function onEdit($param)
  136. {
  137. try
  138. {
  139. if (isset($param['key']))
  140. {
  141. $key=$param['key']; // get the parameter $key
  142. TTransaction::open('conexaomysql'); // open a transaction
  143. $object = new Lancamento($key); // instantiates the Active Record
  144. $this->form->setData($object); // fill the form
  145. TTransaction::close(); // close the transaction
  146. }
  147. else
  148. {
  149. $this->form->clear();
  150. }
  151. }
  152. catch (Exception $e) // in case of exception
  153. {
  154. new TMessage('error', '<b>Error</b> ' . $e->getMessage()); // shows the exception error message
  155. TTransaction::rollback(); // undo all pending operations
  156. }
  157. }
  158. }
  159. </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. private $categoria_contato;
  12. /**
  13. * Constructor method
  14. */
  15. public function __construct($id = NULL, $callObjectLoad = TRUE)
  16. {
  17. parent::__construct($id, $callObjectLoad);
  18. parent::addAttribute('Razao_Social');
  19. parent::addAttribute('categoria_contato_id');
  20. parent::addAttribute('Fantasia');
  21. parent::addAttribute('status');
  22. parent::addAttribute('endereco');
  23. parent::addAttribute('bairro');
  24. parent::addAttribute('cep');
  25. parent::addAttribute('cidade');
  26. parent::addAttribute('estado');
  27. parent::addAttribute('cpf_cnpj');
  28. parent::addAttribute('rg_ie');
  29. parent::addAttribute('telefone_1');
  30. parent::addAttribute('telefone_2');
  31. parent::addAttribute('telefone_3');
  32. parent::addAttribute('email_1');
  33. parent::addAttribute('email_2');
  34. parent::addAttribute('observacao');
  35. parent::addAttribute('data_cadastro');
  36. parent::addAttribute('dia_vencimento');
  37. }
  38. /**
  39. * Method set_categoria_contato
  40. * Sample of usage: $contato->categoria_contato = $object;
  41. * @param $object Instance of CategoriaContato
  42. */
  43. public function set_categoria_contato(CategoriaContato $object)
  44. {
  45. $this->categoria_contato = $object;
  46. $this->categoria_contato_id = $object->id;
  47. }
  48. /**
  49. * Method get_categoria_contato
  50. * Sample of usage: $contato->categoria_contato->attribute;
  51. * @returns CategoriaContato instance
  52. */
  53. public function get_categoria_contato()
  54. {
  55. // loads the associated object
  56. if (empty($this->categoria_contato))
  57. $this->categoria_contato = new CategoriaContato($this->categoria_contato_id);
  58. // returns the associated object
  59. return $this->categoria_contato;
  60. }
  61. }
  62. </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. * Class constructor
  11. * Creates the page and the registration form
  12. */
  13. function __construct()
  14. {
  15. parent::__construct();
  16. // creates the form
  17. $this->form = new TQuickForm('form_Lancamento');
  18. $this->form->setFormTitle('Lançamento de contas');
  19. $this->form->class = 'tform';
  20. // create the form fields
  21. $id = new TEntry('id');
  22. $tipo_conta = new TEntry('tipo_conta');
  23. $tipo_lancamento = new TCombo('tipo_lancamento');
  24. $contato_id = new ">TDBSeekButton('contato_id', 'conexaomysql', 'form_Lancamento', 'Contato', 'Razao_Social', 'contato_id', 'Razao_Social');
  25. $Razao_Social = new TEntry('Razao_Social');
  26. $plano_conta_id = new ">TDBSeekButton('plano_conta_id', 'conexaomysql', 'form_Lancamento', 'PlanoConta', 'plano_conta', 'plano_conta_id', 'descricao_plano_conta');
  27. $descricao_plano_conta = new TEntry('descricao_plano_conta');
  28. $centro_custo_id = new ">TDBSeekButton('centro_custo_id', 'conexaomysql', 'form_Lancamento', 'CentroCusto', 'centro_custo', 'centro_custo_id', 'descricao_centro_custo');
  29. $descricao_centro_custo = new TEntry('descricao_centro_custo');
  30. $documento = new TEntry('documento');
  31. $historico = new TEntry('historico');
  32. $data_emissao = new TDate('data_emissao');
  33. $data_vencimento = new TDate('data_vencimento');
  34. $data_pagamento = new TDate('data_pagamento');
  35. $valor_emitido = new TEntry('valor_emitido');
  36. $desconto = new TEntry('desconto');
  37. $juros = new TEntry('juros');
  38. $valor_documento = new TEntry('valor_documento');
  39. $valor_recebido = new TEntry('valor_recebido');
  40. $combo_items = array();
  41. $combo_items['CP'] ='Conta a Pagar';
  42. $combo_items['CR'] ='Conta a Receber';
  43. $tipo_lancamento->addItems($combo_items);
  44. // define the sizes
  45. $id->setSize(100);
  46. $id->setEditable(FALSE);
  47. $tipo_conta->setSize(200);
  48. $tipo_lancamento->setSize(200);
  49. $contato_id->setSize(100);
  50. $Razao_Social->setSize(400);
  51. $Razao_Social->setEditable(FALSE);
  52. $plano_conta_id->setSize(100);
  53. $descricao_plano_conta->setSize(400);
  54. $descricao_plano_conta->setEditable(FALSE);
  55. $centro_custo_id->setSize(100);
  56. $descricao_centro_custo->setSize(400);
  57. $descricao_centro_custo->setEditable(FALSE);
  58. $documento->setSize(100);
  59. $historico->setSize(100);
  60. $data_emissao->setSize(100);
  61. $data_vencimento->setSize(100);
  62. $data_pagamento->setSize(100);
  63. $valor_emitido->setSize(100);
  64. $desconto->setSize(100);
  65. $juros->setSize(100);
  66. $valor_documento->setSize(100);
  67. $valor_recebido->setSize(100);
  68. // validations
  69. //$tipo_conta->addValidation('tipo_conta', new TRequiredValidator);
  70. $tipo_lancamento->addValidation('Tipo Lançamento', new TRequiredValidator);
  71. $contato_id->addValidation('Contato', new TRequiredValidator);
  72. $plano_conta_id->addValidation('Conta', new TRequiredValidator);
  73. $historico->addValidation('Historico', new TRequiredValidator);
  74. $data_emissao->addValidation('Emissão', new TRequiredValidator);
  75. $data_vencimento->addValidation('Vencimento', new TRequiredValidator);
  76. $valor_emitido->addValidation('Valor Emitido', new TRequiredValidator);
  77. $valor_documento->addValidation('Valor Documento', new TRequiredValidator);
  78. // add one row for each form field
  79. $this->form->addQuickFields('Código:', array($id));
  80. $this->form->addQuickFields('Tipo de Lançamento:', array($tipo_lancamento));
  81. $this->form->addQuickFields('Contato:', array($contato_id, $Razao_Social));
  82. $this->form->addQuickFields('Conta Financeira:', array($plano_conta_id, $descricao_plano_conta));
  83. $this->form->addQuickFields('Centro de Custo:', array($centro_custo_id, $descricao_centro_custo));
  84. $this->form->addQuickFields('Documento:', array($documento));
  85. $this->form->addQuickFields('Histórico:', array($historico));
  86. $this->form->addQuickFields('Emissão:', array($data_emissao));
  87. $this->form->addQuickFields('vencimento:', array($data_vencimento));
  88. $this->form->addQuickFields('Pagamento:', array($data_pagamento));
  89. $this->form->addQuickFields('Valor emitido:', array($valor_emitido));
  90. $this->form->addQuickFields('Desconto:', array($desconto));
  91. $this->form->addQuickFields('Juros:', array($juros));
  92. $this->form->addQuickFields('Valor documento:', array($valor_documento));
  93. $this->form->addQuickFields('Valor Recebido:', array($valor_recebido));
  94. $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));
  95. // create the form actions
  96. $save_button = TButton::create('save', array($this, 'onSave'), _t('Save'), 'ico_save.png');
  97. $new_button = TButton::create('new', array($this, 'onEdit'), _t('New'), 'ico_new.png');
  98. $this->form->addField($save_button);
  99. $this->form->addField($new_button);
  100. $buttons_box = new THBox;
  101. $buttons_box->add($save_button);
  102. $buttons_box->add($new_button);
  103. parent::add($this->form);
  104. parent::add($buttons_box);
  105. }
  106. /**
  107. * method onSave()
  108. * Executed whenever the user clicks at the save button
  109. */
  110. function onSave()
  111. {
  112. try
  113. {
  114. TTransaction::open('conexaomysql'); // open a transaction
  115. // get the form data into an active record Lancamento
  116. //$object = $this->form->getData('Lancamento');
  117. $object = $this->form->getData();
  118. $this->form->validate(); // form validation
  119. $object->store(); // stores the object
  120. $this->form->setData($object); // keep form data
  121. TTransaction::close(); // close the transaction
  122. // shows the success message
  123. new TMessage('info', TAdiantiCoreTranslator::translate('Record saved'));
  124. }
  125. catch (Exception $e) // in case of exception
  126. {
  127. new TMessage('error', '<b>Error</b> ' . $e->getMessage()); // shows the exception error message
  128. $this->form->setData( $this->form->getData() ); // keep form data
  129. TTransaction::rollback(); // undo all pending operations
  130. }
  131. }
  132. /**
  133. * method onEdit()
  134. * Executed whenever the user clicks at the edit button da datagrid
  135. */
  136. function onEdit($param)
  137. {
  138. try
  139. {
  140. if (isset($param['key']))
  141. {
  142. $key=$param['key']; // get the parameter $key
  143. TTransaction::open('conexaomysql'); // open a transaction
  144. $object = new Lancamento($key); // instantiates the Active Record
  145. $this->form->setData($object); // fill the form
  146. TTransaction::close(); // close the transaction
  147. }
  148. else
  149. {
  150. $this->form->clear();
  151. }
  152. }
  153. catch (Exception $e) // in case of exception
  154. {
  155. new TMessage('error', '<b>Error</b> ' . $e->getMessage()); // shows the exception error message
  156. TTransaction::rollback(); // undo all pending operations
  157. }
  158. }
  159. }
  160. </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,