Lançado Adianti Framework 7.6!
Clique aqui para saber mais
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.     
  6.     public function __construct()
  7.     {
  8.         parent::__construct();
  9.         
  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.         
  15.         1597_cliente            = new TEntry('id_cliente');
  16.         $nome_cliente      = new TEntry('nome_cliente');
  17.         $tel_cliente           = new TEntry('tel_cliente');
  18.         $ponto_ref           = new TEntry('ponto_ref');
  19.         $data_nasc_cliente = new TDate('data_nasc_cliente');
  20.         
  21.         1597_cliente->setEditable(FALSE);
  22.         
  23.         $this->form->addQuickField('ID Cliente'1597_cliente25);
  24.         $this->form->addQuickField('Nome'$nome_cliente200);
  25.         $this->form->addQuickField('Telefone'$tel_cliente75);
  26.         $this->form->addQuickField('Referência'$ponto_ref100);
  27.         $this->form->addQuickField('Data de Nascimento'$data_nasc_cliente50);
  28.         
  29.         $save = new TAction( array($this'onSave') );
  30.         $this->form->addQuickAction('Salvar'$save'ico_save.png');
  31.         
  32.         $edit = new TAction( array($this'onEdit') );
  33.         $this->form->addQuickAction('Novo'$edit'ico_new.png');
  34.         
  35.         parent::add($this->form);
  36.     }
  37.     
  38.     
  39.     public function onSave()
  40.     {
  41.          try
  42.          {
  43.             TTransaction::open('conectabd');
  44.             
  45.             $object $this->form->getData('Cliente');
  46.             
  47.             $object->store();
  48.             
  49.             $this->form->setData$object );
  50.             
  51.             new TMessage('info''Registro adicionado com sucesso!');
  52.             
  53.             TTransaction::close(); 
  54.          
  55.          }
  56.          catch (Exception $e)
  57.          {
  58.              new TMessage('error'$e->getMessage());
  59.              TTransaction::rollback();
  60.          
  61.          }   
  62.     
  63.     }
  64.     
  65.     public function onEdit$param )
  66.     {
  67.         try
  68.         {     
  69.            TTransaction::open('conectabd');
  70.                 
  71.            $key $param['key'];
  72.             
  73.            $cliente = new Cliente$key );
  74.            
  75.            $this->form->setData$cliente );
  76.            
  77.            TTransaction::close();
  78.        
  79.         }
  80.         catch (Exception $e)
  81.         {
  82.             new TMessage('error'$e->getMessage());
  83.                         
  84.         }
  85.     }
  86.     
  87. }
  88. ?>

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 (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.         
  6.     public function __construct()
  7.     {
  8.         parent::__construct();
  9.         
  10.         parent::setDatabase('conectabd');
  11.         parent::setActiveRecord('Cliente');
  12.         
  13.         $this->form = new TQuickForm('form_cliente');
  14.         $this->form->setFormTitle('Cadastro de Clientes');
  15.         $this->form->class 'tform';
  16.         $this->form->style 'width: 500px';
  17.         
  18.         $id_cliente        = new TEntry('id_cliente');
  19.         $nome_cliente      = new TEntry('nome_cliente');
  20.         $tel_cliente       = new TEntry('tel_cliente');
  21.         $ponto_ref         = new TEntry('ponto_ref');
  22.         $data_nasc_cliente = new TDate('data_nasc_cliente');
  23.         
  24.         $id_cliente->setEditable(FALSE);
  25.         
  26.         $this->form->addQuickField('ID Cliente'$id_cliente25);
  27.         $this->form->addQuickField('Nome'$nome_cliente350);
  28.         $this->form->addQuickField('Telefone'$tel_cliente75);
  29.         $this->form->addQuickField('Referência'$ponto_ref200);
  30.         $this->form->addQuickField('Data de Nascimento'$data_nasc_cliente100);
  31.         
  32.         $this->form->addQuickAction('Salvar', new TAction( array($this'onSave')), 'ico_save.png');
  33.         $this->form->addQuickAction('Novo', new TAction( array($this'onEdit')), 'ico_new.png');
  34.         
  35.         parent::add($this->form);
  36.     }
  37. }            
  38. ?>
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.    
  8.    public function __construct($id NULL)
  9.    {
  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. }
  18. ?>
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.    
  8.   public function __construct($id NULL$callObjectLoad TRUE// erro nessa linha
  9.    {
  10.        parent::__construct($id$callObjectLoad); // falta essa linha
  11.        parent::addAttribute('nome_cliente');
  12.        parent::addAttribute('tel_cliente');
  13.        parent::addAttribute('endereco_cliente');
  14.        parent::addAttribute('ponto_ref');
  15.        parent::addAttribute('data_nasc_cliente');
  16.    
  17.    } 
  18. }
  19. ?>
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.