Conheça as melhorias da versão 8.0, 8.1, 8.2!
Clique aqui para saber mais
Acessar uma variável na mesma classe Olá, Ainda estou apanhando no entendimento de como pegar o valor de um objeto na mesma classe: Minha classe tem a var $janela como public dá um erro de: Fatal error: Using $this when not in object context in C:xampphtdocserpnfeappcontrolPrincipaForm.class.php on line 274 Fatal error: Using $this when not in object context in C:xampphtdocserpnfeappcontrolPrincipaFo...
AF
Acessar uma variável na mesma classe  
Olá,

Ainda estou apanhando no entendimento de como pegar o valor de um objeto na mesma classe:

Minha classe tem a var $janela como public


dá um erro de:


Fatal error: Using $this when not in object context in C:xampphtdocserpnfeappcontrolPrincipaForm.class.php on line 274

Fatal error: Using $this when not in object context in C:xampphtdocserpnfeappcontrolPrincipaForm.class.php on line 274



 
  1. <?php
  2. class PrincipaForm extends TPage
  3. {
  4. protected $form;
  5. protected $codigo_key;
  6. public $janela;
  7. use Adianti\Base\AdiantiStandardFormTrait; // Standard form
  8. // tenho o method na saida de um campo de produto:
  9. /* ===============================================================*/
  10. /* após a busca do produto passa aqui para jogar dados nos campos */
  11. /* ===============================================================*/
  12. public static function onExitProduto($param)
  13. {
  14. try
  15. {
  16. TTransaction::open('sisrev');
  17. $TabProduto = Principa::find( $param['key'] );
  18. $send = new StdClass;
  19. $send->cf_pro = $TabProduto->cf_pro;
  20. $send->obs_pri = $TabProduto->obs_pri;
  21. $send->obs_pri1 = $TabProduto->obs_pri1;
  22. $send->obs_pri2 = $TabProduto->obs_pri2;
  23. $send->obs_pri3 = $TabProduto->obs_pri3;
  24. $send->aplicacao = $TabProduto->aplicacao;
  25. $send->mensagem = $TabProduto->mensagem;
  26. $send->unidade = $TabProduto->unidade;
  27. $send->peso = $TabProduto->peso;
  28. $send->pesolb = $TabProduto->pesolb;
  29. $send->ingles = $TabProduto->ingles;
  30. $send->espanhol = $TabProduto->espanhol;
  31. $send->unidade = $TabProduto->ingles;
  32. $send->qtminima = $TabProduto->qtminima;
  33. $send->qtmaxima = $TabProduto->qtmaxima;
  34. $send->qtusada = $TabProduto->qtusada;
  35. $send->seguranca = $TabProduto->seguranca;
  36. $send->codlin = $TabProduto->codlin;
  37. $send->codmat = $TabProduto->codmat;
  38. $send->grupo = $TabProduto->grupo;
  39. $send->subgrupo = $TabProduto->subgrupo;
  40. $send->codigoanp = $TabProduto->codigoanp;
  41. $send->curvaabc = $TabProduto->curvaabc;
  42. $send->serie = $TabProduto->serie;
  43. $send->chassi = $TabProduto->chassi;
  44. /$this->janela = new MenuEst(); // uma classe que tem uma datagrid
  45. $this->janela->onReload($param);
  46. TTransaction::close();
  47. TForm::sendData('quick_note_form', $send );
  48. }
  49. catch ( Exception $e )
  50. {
  51. new TMessage('info', $e->getMessage() );
  52. }
  53. }
  54. ?>


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


NR

Não é possível usar a variável $this dentro de uma função static. Declare a variável $window como static e chame-a através do self:
 
  1. <?php
  2. static $window;
  3. ...
  4. static function onExitProduto($param)
  5. {
  6. self::$window->onReload();
  7. }
  8. ?>

Mas explique o que você tentando fazer, porque se estiver tentando recarregar alguma tela para exibição, acredito que deste modo não vá funcionar.
AF

Olá

Uma aplicação que tem dois notebook:

1) o primeiro mostra os dados do produto
2) o segundo notebook é uma datagrid que mostra as marcas e ou fornecedores do produto

Então após selecionar o produto na parte de cima (no method onExitProduto() ) quero buscar os fornecedores do produto e mostrar no segundo notebook na datagrid, recarregar a datagrid e dar um refresh na tela.

e uso o method onReload() não posso mencionar o objeto datagrid, no onExit tambem porque tudo static.

Ari
NR

Nesse caso acredito que você precisará gravar os dados da grid na sessão e recarregar toda tela através do método post, para não perder as informações preenchidas no form:
https://www.adianti.com.br/forum/pt/view_2904?preencher-um-tquickgrid-dentro-de-