Lançado Adianti Framework 8.1!
Clique aqui para saber mais
onSave() fica no Carregando e não salva no banco Boa tarde é a minha primeira experiencia com o adianti, e estou tendo um problema. criei um formulário tudo certinho com, a aplicação esta rodando normal, porem na hora que clico em salvar no formulário fica em loop no [ loading ] já tentei refazer todo o formulário, mudar conexão com o banco de dados e nada resolve. Estou usando mysql...
VE
onSave() fica no Carregando e não salva no banco  
Fechado
Boa tarde é a minha primeira experiencia com o adianti, e estou tendo um problema.

criei um formulário tudo certinho com, a aplicação esta rodando normal, porem na hora que clico em salvar no formulário fica em loop no [ loading ]
já tentei refazer todo o formulário, mudar conexão com o banco de dados e nada resolve.

Estou usando mysql

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


LC

Coloca o código fonte ai pra galera analisar.
VE

Este é o fonte do formulário, Desde já agradeço muito a ajuda


  1. <?php
  2. class DevolutionForm extends TPage
  3. {
  4.     public function __construct()
  5.     {
  6.         parent::__construct();
  7.         $this->form = new TQuickForm('form-devolution');
  8.             $this->form->setFormTitle ('DevolutionForm');
  9.             $this->form->class 'tform';
  10.             $this->form->style 'width: 900px';
  11.             
  12.             
  13.           
  14.             $id    = new TEntry('id');
  15.             $apelido_cliente    = new TEntry('apelido_cliente');
  16.             $protudo    = new TEntry('protudo');
  17.             $valor    = new TEntry('valor');
  18.             $motivo    = new TText('motivo');
  19.             $rastreio_01    = new TEntry('rastreio_01');         
  20.             $frete_01    = new TEntry('frete_01');
  21.             $status_01    = new TCombo('status_01');
  22.             $rastreio_02    = new TEntry('rastreio_02');
  23.             $frete_02    = new TEntry('frete_02');
  24.             $status_02    = new TCombo('status_02');
  25.             $reclamation    = new TCombo('reclamation');
  26.             $geral    = new TCombo ('geral');
  27.             $nome_cliente    = new TEntry('nome_cliente');
  28.             $cli_rua    = new TEntry('cli_rua');
  29.             $cli_numero    = new TEntry('cli_numero');
  30.             $cli_bairro    = new TEntry('cli_bairro');
  31.             $cli_cidade    = new TEntry('cli_cidade');
  32.             $cli_estado    = new TEntry('cli_estado');
  33.             $cli_cep    = new TEntry('cli_cep');
  34.            
  35.          
  36.             $id->setEditable(FALSE);
  37.             $status_01->addItems( array ( 1=>'postado'2=>'entregue'3=>'estraviado'4=>'aguardando retirar') );
  38.             $status_02->addItems( array ( 1=>'postado'2=> 'entregue'3=> 'estraviado'4=> 'aguardando retirar') );
  39.             $reclamation->addItems( array ( 1=> 'sim'2=> 'não') );
  40.             $geral->addItems( array ( 1=> 'aberta'2=> 'fechada') );
  41.             $cli_cep->setMask('99-999-999');
  42.             
  43.          
  44.             $id->setSize(100);
  45.             $apelido_cliente->setSize(315);
  46.             $protudo->setSize(400);
  47.             $valor->setSize(100);
  48.             $rastreio_01->setSize(250);
  49.             $frete_01->setSize(100);
  50.             $status_01->setSize(200);
  51.             $rastreio_02->setSize(250);
  52.             $frete_02->setSize(100);
  53.             $status_02->setSize(200);
  54.             
  55.           
  56.             $this->form->addQuickFields('ID', array($id, new TLabel('Apelido Do Cliente'), $apelido_cliente));
  57.             $this->form->addQuickFields('Produto', array($protudo, new TLabel('Valor'), $valor));
  58.             $this->form->addQuickField'Motivo'$motivo300);
  59.             $motivo->setSize(55050);
  60.             $this->form->addQuickFields('Rastreio 01', array($rastreio_01, new TLabel('Frte 01'), $frete_01, new TLabel('Status 01'), $status_01));
  61.             $this->form->addQuickFields('Rastreio 02', array($rastreio_02, new TLabel('Frte 02'), $frete_02, new TLabel('Status 02'), $status_02));
  62.             $this->form->addQuickField'Reclamação'$reclamation100);
  63.             $this->form->addQuickField'Staus Geral'$geral100);
  64.             $row $this->form->addRow();
  65.             $row->class 'tformsection';
  66.             $row->addCell( new TLabel('Dados Para Envio'))->colspan 2;
  67.             $this->form->addQuickField'Nome Do Cliente'$nome_cliente300);
  68.             $this->form->addQuickField'Rua'$cli_rua 300);
  69.             $this->form->addQuickField'Numer'$cli_numero300);
  70.             $this->form->addQuickField'Bairro'$cli_bairro300);
  71.             $this->form->addQuickField'Cidade'$cli_cidade300);
  72.             $this->form->addQuickField'Estado'$cli_estado300);
  73.             $this->form->addQuickField'Cep'$cli_cep300);
  74.             
  75.           
  76.             $save = new TAction( array($this'onSave') );
  77.             $this->form->addQuickAction('salvar'$save'ico_save.png');
  78.             
  79.             parent::add($this->form);
  80.             
  81.     }
  82.     
  83.    public function onSave()
  84.    {
  85.      try
  86.      {
  87.      TTransaction::open('devolution');
  88.      
  89.     $object $this->form->getData('Devolution');
  90.     
  91.     
  92.     $object->store();
  93.     
  94.     $this->form->setData$object );
  95.     
  96.     new TMessage('info''registro salvo com sucesso');
  97.      
  98.      TTransaction::close();
  99.           
  100.      }
  101.      catch (Exception $e)
  102.      {
  103.         new TMssage('error'$e->getMessage());
  104.         TTransaction::rollback();
  105.              
  106.      }
  107.    
  108.    }
  109.     
  110. }
  111. ?>
AS

Vagner Eugenio tive um problema parecido. Cada campo do arquivo para serem gravados pelo FORM tem que estar definidos no modelo (MODEL). Você criou o model (TRecord) referente ao seu Form?

Se não criou basta gerá-lo e vai funcionar tudo direitinho, é tiro e queda - (a opção "new model" gera automático).

Espero que tenha ajudado.
VE

Bom dia Joaquin criei sim olha a estrutura [ ..config/develinion.ini | ..model/Devolution.class.php | ..control/Devolutions.class.php ] já tentei renomear os arquivos e nada

olha o model

  1. <?php
  2. class Devolution extends TRecord
  3.       const TABELENAME 'devolutio';
  4.       const PRIMARYKEY 'id';
  5.       const IDPOLICY   'max';
  6.       
  7.       public function __construct ($id NULL)
  8.       {
  9.          parent::__construct($id);
  10.          
  11.          parent::__addattribute('nome_cliente');
  12.          parent::__addattribute('apelido_cliente');
  13.          parent::__addattribute('protudo');
  14.          parent::__addattribute('valor');
  15.          parent::__addattribute('motivo');
  16.          parent::__addattribute('rastreio_01');
  17.          parent::__addattribute('frete_01');
  18.          parent::__addattribute('rastreio_02');
  19.          parent::__addattribute('frete_02');
  20.          parent::__addattribute('reclamation');
  21.          parent::__addattribute('cli_cep');
  22.          parent::__addattribute('cli_estado');
  23.          parent::__addattribute('cli_cidade');
  24.          parent::__addattribute('cli_bairro');
  25.          parent::__addattribute('cli_rua');
  26.          parent::__addattribute('cli_numero');
  27.          parent::__addattribute('status_01');
  28.          parent::__addattribute('status_02');
  29.          parent::__addattribute('geral');
  30.               
  31.       }
  32.       
  33.       
  34. }
  35. ?>

AS


Desculpe, também posso me considerar um iniciante, não saberia dizer porque não grava.

Obs:

..config/develinion.ini
TTransaction::open('devolution');

Vejo que o nome do arquivo ".ini" (develinion) está diferente no TTransaction ('devolution'), eles devem ter o mesmo nome. Foi distração na digitação no Forum...?




VE

desculpa rsrs foi erro na digitação [ teclado do celular ] rsrsrs sim os arquivos estão com o mesmo nome, exatamente como esta no form
VE

pensei que fosse alguma configuração na meu servidor, mais creio que não é, deve ser alguma coisa que montei errado, pois instalei o scriptcase na minha máquina para ver se era problema com o Sql, mais ele ta funcionando normal, então com certeza é alguma coisa que esta errada no fonte do sistema, já refis o código 2 vezes e criei um outro formulários mais ainda não consegui solucionar o problema. Todos os formulários que eu crio não salva.

quando clica em salvar, ele fica com um quadrado preto na tela escrito loading e não sai disso, já refiz o botão de salvar e nada.

AS

Você está usando o Studio (gerador de programas), ou está fazendo na unha?
AS

Acho que descobri o que está fazendo seu programa não gravar, vc não criou o objeto Devolution, veja o exemplo abaixo:

...
ttry
{
TTransaction::open('controleobra'); // open a transaction


$object = new Conta; // create an empty object --->>> FALTOU ESTE COMANDO AQUI

$data = $this->form->getData(); // get form data as array

$object->fromArray( (array) $data); // load the object with data

$object->store(); // save the object

// get the generated id
$data->id = $object->id;

$this->form->setData($data); // fill form data
TTransaction::close(); // close the transaction

new TMessage('info', TAdiantiCoreTranslator::translate('Record saved')); // success message

}
catch (Exception $e) // in case of exception
{
new TMessage('error', $e->getMessage()); // shows the exception error message
$this->form->setData( $this->form->getData() ); // keep form data
TTransaction::rollback(); // undo all pending operations
}
...
AS

Repetindo
...
  1. <?php
  2. ttry
  3. {
  4. TTransaction::open('controleobra'); // open a transaction
  5. $object = new Conta// create an empty object --->>> FALTOU ESTE COMANDO AQUI
  6. $data $this->form->getData(); // get form data as array
  7. $object->fromArray( (array) $data); // load the object with data
  8. $object->store(); // save the object
  9. // get the generated id
  10. $data->id $object->id;
  11. $this->form->setData($data); // fill form data
  12. TTransaction::close(); // close the transaction
  13. new TMessage('info'TAdiantiCoreTranslator::translate('Record saved')); // success message
  14. }
  15. catch (Exception $e// in case of exception
  16. {
  17. new TMessage('error'$e->getMessage()); // shows the exception error message
  18. $this->form->setData$this->form->getData() ); // keep form data
  19. TTransaction::rollback(); // undo all pending operations
  20. }
  21. ?>

...
JC

Saudações Vagner

verifica a model const TABELENAME = 'devolutio'; não deveria ser 'devolution'
VE

Boa noite Jorge, esta correto o nome da tabela é este mesmo, e em todos os casos criei outra tabela e formulário e mesmo assim não sai do loading, não sei se o problema seja com o banco de dados, deve ser alguma configuração no botão de salvar, mais já tentei refazer tudo do zero e mesmo assim não chego a uma solução
AA

Vagner, seu config está configurado corretamente? se fica na tela de loading, já verificou se gerou algum erro js?
VE

Bom dia Anderson, sim o config esta correto, e já alterei criei um banco em sqlite e em mysql mais mesmo assim o erro persiste.
Para mim o erro esta nessa parte mais não consigo achar.

  1. <?php
  2.   $save = new TAction( array($this'onSave') );
  3.             $this->form->addQuickAction('salvar'$save'ico_save.png');
  4.             
  5.             parent::add($this->form);
  6.             
  7.     }
  8.     
  9.    public function onSave()
  10.    {
  11.      try
  12.      {
  13.      TTransaction::open('devolution');
  14.      
  15.     $object $this->form->getData('Devolution');
  16.     
  17.     
  18.     $object->store();
  19.     
  20.     $this->form->setData$object );
  21.     
  22.     new TMessage('info''registro salvo com sucesso');
  23.      
  24.      TTransaction::close();
  25.           
  26.      }
  27.      catch (Exception $e)
  28.      {
  29.         new TMssage('error'$e->getMessage());
  30.         TTransaction::rollback();
  31.              
  32.      }
  33.    
  34.    }
  35.     
  36. }
  37. ?>
AA

vc declarou o form? private $form;

class DevolutionForm extends TPage { private $form; // <<<<< public function __construct() {
VE

Anderson eu alterei o código e quando coloco

private $form; // <<<<<

o formulário não aparece,
AA

Você tem Telegram? se tiver entra nesse grupo. https://telegram.me/joinchat/CKWfqwbym-NiETKmKnAZgQ

é mais fácil de conversar.
VE

Anderson não tenho me add no whats 16 991428824 ou skype vadesingner

Grato
AA

Conseguimos uma solução.

De parent::__addattribute para parent::addAttribute
De TABELENAME para TABLENAME
De new TMssage('error', $e->getMessage()); para new TMessage('error', $e->getMessage());
LJ

apenas um detalhe:

3=>'estraviado' altere para 3=>'extraviado'

PD

Às vezes o erro que trava o "Carregando" nem é relacionado ao PHP, mas ao Javascript.
Ex: Se vcs subirem um arquivo em um host, mas alguns .js não tiverem permissão de leitura, dá erro, mas que só e visível com o Console JS [F12] aberto.

Att,