Exemplo DatagridWindowForm com Validação não funciona. Bom dia galera, no exemplo DatagridWindowForm não consta validações de campos do formulário. quando coloco o código para uma validação, ele limpa todos os campos PAI. Tenho a página PAI que tenha FORM1 ao clicar no add ele chama um TWindow com FORM2, ao validar qualquer campo do FORM2 ele limpa as informações do FORM1....
WS
Exemplo DatagridWindowForm com Validação não funciona.  
Fechado
Bom dia galera, no exemplo DatagridWindowForm não consta validações de campos do formulário.

quando coloco o código para uma validação, ele limpa todos os campos PAI.
 
  1. <?php
  2. $this->form->validate();
  3. ?>

Tenho a página PAI que tenha FORM1 ao clicar no add ele chama um TWindow com FORM2, ao validar qualquer campo do FORM2 ele limpa as informações do FORM1.

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


WS



 
  1. <?php
  2. /**
  3. * NewWindowForm
  4. *
  5. * @version 1.0
  6. * @package samples
  7. * @subpackage tutor
  8. * @author Pablo Dall'Oglio
  9. * @copyright Copyright (c) 2006-2014 Adianti Solutions Ltd. (http://www.adianti.com.br)
  10. * @license http://www.adianti.com.br/framework-license
  11. */
  12. class NewWindowForm extends TWindow
  13. {
  14. private $form;
  15. /**
  16. * Class constructor
  17. * Creates the page
  18. */
  19. function __construct()
  20. {
  21. parent::__construct();
  22. parent::setSize(570,200);
  23. // create the form using TQuickForm class
  24. $this->form = new TQuickForm;
  25. $this->form->class = 'tform';
  26. $this->form->setFormTitle('Quick form');
  27. $this->form->style = 'width: 500px';
  28. // create the form fields
  29. $code = new TEntry('code');
  30. $name = new TEntry('name');
  31. // add the fields inside the form
  32. $this->form->addQuickField('Code', $code, 100, new TRequiredValidator);
  33. $this->form->addQuickField('Name', $name, 400);
  34. // define the form action
  35. $this->form->addQuickAction('Save', new TAction(array($this, 'onSave')), 'ico_save.png');
  36. parent::add($this->form);
  37. }
  38. public function onSave($param)
  39. {
  40. $data = $this->form->getData();
  41. $this->form->validate();
  42. // put the data back to the form
  43. $this->form->setData($data);
  44. $objects = TSession::getValue('session_contacts');
  45. $objects[ $data->code ] = $data;
  46. TSession::setValue('session_contacts', $objects);
  47. // show the message
  48. new TMessage('info', 'Record added', new TAction(array('DatagridWindowForm', 'onReload')));
  49. }
  50. public function onLoad()
  51. {
  52. }
  53. }
  54. ?>


Código completo do frame com a validação e gerando um erro, alguém pode me ajudar?...
NR

$this->form->validate gera uma Exception, coloque o try/catch na onSave...
WS

Bem isso mesmo, apenas para completar a resposta do nosso amigo Nataniel, no cath deve colocar:
 
  1. <?php
  2. $this->form->setData( TSession::getValue('master_item') );
  3. $this->formWindow->setData( $this->form->getData());
  4. ?>

onde o form seria o formulário PAI e o formWindow seria o formulário Filho(TWINDOW).
WS

Esse TWindow ta dando o que falar.
 
  1. <?php
  2. $dataWindow = $this->formWindow->getData();
  3. $dataWindow->window_id = 15;
  4. $this->formWindow->setData($dataWindow);
  5. ?>


Com esse código eu não consigo colocar o valor do ID trabalhando com o setData. A questão é que talvez a informação esta indo no formulário PAI, por exemplo, eu quero dar um simples print_r no metodo do windowForm() a o print sai na página PAI.
PD

Dê nomes diferentes aos forms:

new TQuickForm('outracoisa')