Fatal error: Call to undefined method AdiantiDatabaseTRecord:: Segui o exemplo do vídeo e consegui criar o formulário, porém ao clicar no botão salvar aparece a mensagem: Fatal error: Call to undefined method AdiantiDatabaseTRecord::addAtribute() in C:xampphtdocsERPsysappmodelFilme.class.php on line 12. Segue o código da model: ...
WF
Fatal error: Call to undefined method AdiantiDatabaseTRecord::  
Fechado
Segui o exemplo do vídeo e consegui criar o formulário, porém ao clicar no botão salvar aparece a mensagem: Fatal error: Call to undefined method AdiantiDatabaseTRecord::addAtribute() in C:xampphtdocsERPsysappmodelFilme.class.php on line 12.

Segue o código da model:
 
  1. <?php
  2. class Filme extends TRecord
  3. {
  4. const TABLENAME = 'filme';
  5. const PRIMARYKEY= 'id';
  6. const IDPOLICY = 'max'; // {max, serial}
  7. public function __construct(1241 = NULL)
  8. {
  9. parent::__construct(1241);
  10. parent::addAtribute('titulo'); // aqui é onde o erro é apontado
  11. parent::addAtribute('diretor');
  12. parent::addAtribute('id_suporte');
  13. parent::addAtribute('id_genero');
  14. parent::addAtribute('dt_lcto');
  15. parent::addAtribute('duracao');
  16. }
  17. }
  18. ?>

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


FC

Poste a Class que vc criou o form pois o model está correto configurou o ini etc...
RF

Código do FilmeForm.class.php

 
  1. <?php
  2. class FilmeForm extends TPage
  3. {
  4. private $form;
  5. public function __construct()
  6. {
  7. parent::__construct();
  8. $this->form = new TQuickForm('form_filme');
  9. $this->form->setFormTitle('Filme');
  10. $this->form->class = 'tform';
  11. //$this->form->style = 'width: 500px';
  12. $id = new TEntry('id');
  13. $titulo = new TEntry('titulo');
  14. $diretor = new TEntry('diretor');
  15. $id_suporte = new TCombo('id_suporte');
  16. $id_genero = new TCombo('id_genero');
  17. $dt_lcto = new TDate('dt_lcto');
  18. $duracao = new TEntry('duracao');
  19. $id->setEditable(FALSE);
  20. $duracao->setMask('999');
  21. $id_suporte->addItems(array(1=> 'DVD', 2=>'Blu-ray'));
  22. $id_genero->addItems(array(1=> 'Romance', 2=>'Ficção'));
  23. $this->form->addQuickField('ID',$id,100);
  24. $this->form->addQuickField('Titulo',$titulo,200);
  25. $this->form->addQuickField('Diretor',$diretor,200);
  26. $this->form->addQuickField('Suporte',$id_suporte,100);
  27. $this->form->addQuickField('Genero',$id_genero,100);
  28. $this->form->addQuickField('Lançamento',$dt_lcto,100);
  29. $this->form->addQuickField('Duração',$duracao,100);
  30. $save = new TAction(array($this,'onSave'));
  31. $this->form->addQuickAction('Salvar', $save, 'ico_save.png');
  32. parent::add($this->form);
  33. }
  34. public function onSave()
  35. {
  36. try
  37. {
  38. TTransaction::open('teste');
  39. $object = $this->form->getData('filme');
  40. //var_dump($object);
  41. $object->store();
  42. $this->form->setData($object);
  43. new TMessage('info', 'Registro salvo com sucesso');
  44. TTransaction::close();
  45. }
  46. catch (Exception $e)
  47. {
  48. new TMessage('error', $e->getMessage());
  49. TTransaction::rollback();
  50. }
  51. }
  52. }
  53. ?>



Código do teste.ini

host =
name = app/database/teste.db
user =
pass =
type = sqlite
FC

Faltou passar os campos no setFileds
$this->form->setFields(array($campos)


e dentro do onSave corrija esta linha

$object = $this->form->getData('filme');
por
$object = $this->form->getData('Filme');

o PHP é case sensitive.

Abraços...

RF

Boa tarde...

Agradecido pela atenção, mas eu revi umas duas vezes o vídeo do Pablo e não sei onde colocar esse código de "$this->form->setFields(array($campos)"; você poderia me passar aonde colocar?
FC

oi Robson

Realmente o que vc confundiu e eu me guiei é o seguinte quando vc estende a TPage a classe precisa passar o setFields

Ex:
class FilmeForm extends TPage

agora se vc fizer estender a TStandardForm não precisa altere assim então.

class FilmeForm extends TStandardForm

abraços...
RF

Obrigado, nada funciona.
PD

Robson,

Verifique se a versão do seu PHP é 5.5 ou superior.

Att,
Pablo
IM

O problema aqui é bem simples!

parent::addAtribute('titulo'); // aqui é onde o erro é apontado

O erro da linha acima é porque "addAtribute" tem 2 "t"... então o correto é:

parent::addAttribute('titulo');

Espero ter ajudado ;-)

at,
Isaac Mendes Jr.