Formulário não carrega dados da tabela para edição de registro Pessoal, Alguém pode analisar o código abaixo e detectar algo de errado que está impedindo que o formulário carregue os dados da tabela para edição através do parâmetro 'key'. Eu digito na URL "http://localhost/misterchef/index.php?class=ClienteForm&method=onEdit&key=1" e formulário não carrega os dados da tabela, os campos do formulário ficam em branco e também não apresenta ne...
ML
Formulário não carrega dados da tabela para edição de registro  
Fechado
Pessoal,

Alguém pode analisar o código abaixo e detectar algo de errado que está impedindo que o formulário carregue os dados da tabela para edição através do parâmetro 'key'.

Eu digito na URL "localhost/misterchef/index.php?class=ClienteForm&method=onEdit&a e formulário não carrega os dados da tabela, os campos do formulário ficam em branco e também não apresenta nenhuma mensagem de erro.

 
  1. <?php
  2. class ClienteForm extends TPage
  3. {
  4. private $form;
  5. public function __construct()
  6. {
  7. parent::__construct();
  8. $this->form = new TQuickForm('form_cliente');
  9. $this->form->setFormTitle('Cadastro de Clientes');
  10. $this->form->class = 'tform';
  11. $this->form->style = 'width: 500px';
  12. 1597_cliente = new TEntry('id_cliente');
  13. $nome_cliente = new TEntry('nome_cliente');
  14. $tel_cliente = new TEntry('tel_cliente');
  15. $ponto_ref = new TEntry('ponto_ref');
  16. $data_nasc_cliente = new TDate('data_nasc_cliente');
  17. 1597_cliente->setEditable(FALSE);
  18. $this->form->addQuickField('ID Cliente', 1597_cliente, 25);
  19. $this->form->addQuickField('Nome', $nome_cliente, 200);
  20. $this->form->addQuickField('Telefone', $tel_cliente, 75);
  21. $this->form->addQuickField('Referência', $ponto_ref, 100);
  22. $this->form->addQuickField('Data de Nascimento', $data_nasc_cliente, 50);
  23. $save = new TAction( array($this, 'onSave') );
  24. $this->form->addQuickAction('Salvar', $save, 'ico_save.png');
  25. $edit = new TAction( array($this, 'onEdit') );
  26. $this->form->addQuickAction('Novo', $edit, 'ico_new.png');
  27. parent::add($this->form);
  28. }
  29. public function onSave()
  30. {
  31. try
  32. {
  33. TTransaction::open('conectabd');
  34. $object = $this->form->getData('Cliente');
  35. $object->store();
  36. $this->form->setData( $object );
  37. new TMessage('info', 'Registro adicionado com sucesso!');
  38. TTransaction::close();
  39. }
  40. catch (Exception $e)
  41. {
  42. new TMessage('error', $e->getMessage());
  43. TTransaction::rollback();
  44. }
  45. }
  46. public function onEdit( $param )
  47. {
  48. try
  49. {
  50. TTransaction::open('conectabd');
  51. $key = $param['key'];
  52. $cliente = new Cliente( $key );
  53. $this->form->setData( $cliente );
  54. TTransaction::close();
  55. }
  56. catch (Exception $e)
  57. {
  58. new TMessage('error', $e->getMessage());
  59. }
  60. }
  61. }
  62. ?>

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


ML

endereço correto digitado na URL
localhost/misterchef/index.php?class=ClienteForm&method=onEdit&a
ML

Mudei o código como está abaixo, mas a busca continua com a mesma situação o formulário não carrega as informações do banco.

 
  1. <?php
  2. class ClienteForm extends TStandardForm
  3. {
  4. protected $form;
  5. public function __construct()
  6. {
  7. parent::__construct();
  8. parent::setDatabase('conectabd');
  9. parent::setActiveRecord('Cliente');
  10. $this->form = new TQuickForm('form_cliente');
  11. $this->form->setFormTitle('Cadastro de Clientes');
  12. $this->form->class = 'tform';
  13. $this->form->style = 'width: 500px';
  14. $id_cliente = new TEntry('id_cliente');
  15. $nome_cliente = new TEntry('nome_cliente');
  16. $tel_cliente = new TEntry('tel_cliente');
  17. $ponto_ref = new TEntry('ponto_ref');
  18. $data_nasc_cliente = new TDate('data_nasc_cliente');
  19. $id_cliente->setEditable(FALSE);
  20. $this->form->addQuickField('ID Cliente', $id_cliente, 25);
  21. $this->form->addQuickField('Nome', $nome_cliente, 350);
  22. $this->form->addQuickField('Telefone', $tel_cliente, 75);
  23. $this->form->addQuickField('Referência', $ponto_ref, 200);
  24. $this->form->addQuickField('Data de Nascimento', $data_nasc_cliente, 100);
  25. $this->form->addQuickAction('Salvar', new TAction( array($this, 'onSave')), 'ico_save.png');
  26. $this->form->addQuickAction('Novo', new TAction( array($this, 'onEdit')), 'ico_new.png');
  27. parent::add($this->form);
  28. }
  29. }
  30. ?>
FC

Ta faltando o paramentro id.
ML

Em que parte Felipe?

http://localhost/misterchef/index.php?class=ClienteForm&method=onEdit&key=21
- Estou passando esse parametro na URL, mas não carrega o formulario de cadastro de clientes para edição.


Obg, pelo retorno.
ML

Em que parte Felipe?

http://localhost/misterchef/index.php?class=ClienteForm&method=onEdit&key=21
- Estou passando esse parametro na URL, mas não carrega os dados para o formulario de cadastro de clientes para edição, carrega só o formulário em branco..


Obg, pelo retorno.
FC

Note no final de sua URL falta passar key que vai ser interpretado pelo onEdit
Note:
www.adianti.com.br/framework_files/tutor/index.php?class=CustomerFor
ML

Na hora de copiar para o fórum é que o link está ficando com esse final localhost/misterchef/index.php?class=ClienteForm&method=onEdit&a, mas na URL o final é =onEdit&key=1 e os dados não são carregados para o formulário.
FC

existe o registro 1 ?
ML

Tem até o registro 30.
FC

posta seu model Marcelo.
ML

Segue...

 
  1. <?php
  2. class Cliente extends TRecord
  3. {
  4. const TABLENAME = 'tbclientes';
  5. const PRIMARYKEY = 'id_cliente';
  6. const IDPOLICY = 'max';
  7. public function __construct($id = NULL)
  8. {
  9. parent::addAttribute('nome_cliente');
  10. parent::addAttribute('tel_cliente');
  11. parent::addAttribute('endereco_cliente');
  12. parent::addAttribute('ponto_ref');
  13. parent::addAttribute('data_nasc_cliente');
  14. }
  15. }
  16. ?>
FC

Realmente não estou vendo erro tem como me enviar o projeto? É em sqlite? O campo id_cliente está como int ?
ML

To usando mysql.

O campo esta como int.

Te mando por e-mail?
FC

felipecortez.fgc@gmail.com amanhã dou uma olhada.
ML

Enviei o e-mail.

Preciso muito de ajuda, pois estou fazendo um trabalho pra apresentação na faculdade.
FC

Achei o erro ele está no Model.

 
  1. <?php
  2. class Cliente extends TRecord
  3. {
  4. const TABLENAME = 'tbclientes';
  5. const PRIMARYKEY = 'id_cliente';
  6. const IDPOLICY = 'max';
  7. public function __construct($id = NULL, $callObjectLoad = TRUE) // erro nessa linha
  8. {
  9. parent::__construct($id, $callObjectLoad); // falta essa linha
  10. parent::addAttribute('nome_cliente');
  11. parent::addAttribute('tel_cliente');
  12. parent::addAttribute('endereco_cliente');
  13. parent::addAttribute('ponto_ref');
  14. parent::addAttribute('data_nasc_cliente');
  15. }
  16. }
  17. ?>
ML

Felipe!

Deu certo fiz o que vc pediu, ta ok!!

Muito obrigado por dispor do seu tempo e do seu conhecimento para me ajudar...

Vou dar continuidade no trabalho que tenho que apresentar.

Caso tenha novos ''problemas'', espero poder contar com sua ajuda.
AC

Estou com o mesmo problema e não consegui solucionar.
Sou iniciante no Adianti e copiei um exemplo de cadastro simples do vídeo do Pablo no youtube (link https://www.youtube.com/watch?v=VcX_bPhdCes), mas, quando passo o comando pelo browser: localhost/index.php?class=ImobiliariaForm&method=onEdit&key=, não posiciona no registro 1. Se coloco key=2 fala que não tem na tabela e está correto, já na key=1 não emite mensagem de alerta e nem posiciona...

No meu caso, meu Model possui o código abaixo e que foi sugerido acima para a solução. Mesmo assim não funciona. O que será que pode ser? Quais os fatores necessários para o comando &method=onEdit&key=1 funcionar?

public function __construct($id = NULL, $callObjectLoad = TRUE) // erro nessa linha
{
parent::__construct($id, $callObjectLoad); // falta essa linha

Obrigada,
Adriana
AC

Gente, o link correto, no qual copiei a tela de cadastro, é o https://www.youtube.com/watch?v=ccnKCrhB1io.
AC

Pois acabei descobrindo o que era. Após assistir todo o vídeo novamente e conferir se estava tudo certo e após clicar no botão listar também emitir mensagem de que o id não existia ou era null, desconfiei que poderia ser algo na estrutura da tabela que criei. Pois criei outra tabela e inseri o ID como tipo inteiro e como primary. Na outra tabela havia mudado muito a estrutura para testar e deve ter ficado algo errado. Após criar outra tabela funcionou. No meu caso então era erro na estrutura das colunas da tabela, provavelmente no ID.